官网: https://redis.io/
参考: http://redisdoc.com/
------------------------常见操作---------------------------
客户端连接:
redis-cli -h {IP} -a {password}
可以显示密码
CONFIG GET requirepass:
DBSIZE:
返回当前库中有多少条数据
FLUSHDB
清空当前数据库数据.
SET
设置值(key是大小写敏感)
#1: 设置k1, 值为v1
set k1 v1
#2: 设置k2, 值为v2, 但是在5's后过期, 可以指定过期时间EX(秒), PX(毫秒), NX(不存在才能进行操作), XX(存在是才能进行操作)
set k2 v2 ex 5
SETEX
将值 value 关联到 key, 并将 key 的生存时间设为 seconds(以秒为单位)。
SETNX
将Key的值设置为value, 当key不存在的时候才可以, 如果存在, 则不进行任何操作.
SETRANGE
用value参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始,相当于replace
SET K1 "TODAY IS SUNDA"
SETRANGE K1 9 FRIDAY
返回:
"TODAY IS FRIDAY"
MSET
设置多个值, 键值对形式 k1 v1 k2 v2..., 如果某个值存在, 则用新值覆盖旧值.
MSET k3 v3 k4 v4 k5 v5
mset person:name "zhangshan" person:age 13
MSETNX
设置多个, 但是有原子性. 如果存在, 则不能成功, 比如之前已经有k8, 则不能插入
msetnx k7 v72 k8 v81
PSETEX
以毫秒为单位设置key的生存时间
PSETEX value 2000 111
get value
第一次结果: "111"
get value
第二次结果: nil
GET
返回 key 所关联的字符串值, 如果 key 不存在那么返回特殊值 nil.
GETSET
设置一个值, 但是返回旧值, 如果key不存在, 则返回错误
GETSET hello "this is update one"
返回this is my first redis, 但是现在hello的值为this is update one
GETRANGE
截取字符串指定范围的值(包括start和end在内). 支持负数, 从左往右是0,1,..., 从右往左为 ...-2,-1
SET hello "this is my first redis"
GETRANGE hello 5 6
返回 is
GETRANGE hello -5 -1
返回 redis
GETRANGE hello 0 -1
GETRANGE hello 0 10000
返回整个字符串 this is my first redis
MGET
返回所有(一个或多个)给定key的值, 如果某个值不存在, 则这个key返回nil
MGET k1 k2
DEL
删除键
DEL K10
expire
设置过期时间
pexpire
设置过期时间(毫秒)
expireat
在时间点过期, 用得少, 参数是timestamp
pexpireat
在时间点过期, 毫秒计算, 用得少
persist
取消过期
ttl
查看存活时间(以秒为单位)
pttl
查看存活时间(以毫秒为单位)
type
查看键类型
exists
查看键是否存在
rename
替换键
RENAME 10 k10
RENAMENX
替换键, 当key不存在时, 返回错误
dump, restore
dump 是序列化一个值, restore 是将序列化后的值反序列化
SET country guangzhou
DUMP COUNTRY
"\x00\tGUANGZHOU\b\x00\x9a\xd7\xa9\xcd\xc4K\xe3="
DEL COUNTRY
RESTORE COUNTRY 0 "\x00\tGUANGZHOU\b\x00\x9a\xd7\xa9\xcd\xc4K\xe3="
GET COUNTRY
"GUANGZHOU"
keys
查找所有符合给定模式pattern的key
KEYS *
move
将当前的key移动到指定的db中, 一般redisdb有16个db(0-15)
MOVE K3 1
randomkey
从当前数据库中随机返回一个key
sort
返回或保存给定列表、集合、有序集合 key 中经过排序的元素。
LPUSH list1 1 3 4 9 10 7 5
sort list1
Type
返回 key 所储存的值的类型
type list1
------------------------字符串------------------
Append
将value 追加到 key 原来的值的末尾
append k1 -update
STRLEN
返回 key 所储存的字符串值的长度, 如果值不是字符串, 返回错误
------------------------数字
DECR
将 key 中储存的数字值减一, 如果值不是数字, 则返回错误
DECRBY
将 key 中储存的数字值减去指定的值, 如果值不是数字, 则返回错误
INCR
将 key 中储存的数字值加一, 如果值不是数字, 则返回错误
SET int1 20
INCR int1
GET int1
返回值21
INCRBY
将 key 中储存的数字值加上指定的值, 如果值不是数字, 则返回错误
INCRBY int1 19
返回值40
INCRBYFLOAT
为 key 中所储存的值加上浮点数增量 increment, 返回的结果的精度和增量一致
------------------------BIT 操作------------------
SETBIT
设置某一位上的值.
SETBIT bit 100 1
BITCOUNT
计算给定字符串中,被设置为1的比特位的数量, 统计流量
SETBIT k1 1 0
SETBIT K1 2 1
SETBIT K1 3 1
SETBIT K1 5 1
BITCOUNT K1
结果3
BITOP
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上.
SETBIT K1 0 1
SETBIT K1 1 1
SETBIT K2 0 0
SETBIT K2 1 1
BITOP AND K3 K1 K2
BIGGET K3 1
结果是1
GETBIT
对key所储存的字符串值, 获取指定偏移量上的位(bit).
------------------------HASH 操作----------------------
HSET
将哈希表 key 中的域 field 的值设为 value.
如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作.
如果域 field 已经存在于哈希表中,旧值将被覆盖.
HSET leo name "leo"
HGET
返回哈希表 key 中给定域 field 的值.
HDEL
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
HDEL leo name
HEXISTS
查看给定的field是否存在.
HGETALL
返回哈希表key中,所有的域和值.
HKEYS
返回哈希表中所有的keys
HVALS
返回hash表中指定key所有的值
HVALS rommy
HLEN
返回哈希表中key域的数量
HMGET
返回hash表中key的多个给定域的值.
HMSET
同时将多个field-value值设置到hash表中
HMSET rommy name "rommy" age 33 address "guangzhou"
HSTRLEN
返回哈希表 key中,与给定域field相关联的值的字符串长度(string length)
HSTRLEN rommy name
返回 5
------------------------LIST 操作
LIST允许有重复的值
LPUSH
把一个或者多个值插入到key中, 注意这个是先进后出来, 和RPUSH相反
LPUSH name "leo" "peter"
LRANGE name 0 -1
返回的结果是 peter leo
LPUSHX
把一个或者多个值插入到key中, 注意存在key才插入, 否则不插入
RPUSH
将一个或多个值value插入到列表key的表尾(最右边).
RPUSHX
将一个或多个值value插入到列表key的表尾(最右边).注意存在key才插入, 否则不插入
LSET
设置值
LSET name 0 "new"
LLEN
返回列表Key的长度
LLEN name
LRANGE
返回列表的值
LRANGE name 0 -1
LPOP
从list中头部先弹出元素
BLPOP
相当于是从list里面移除元素, 但是为(BLOCK式, 是LPOP的阻塞式版本)
RPOP
从list中尾部弹出元素
BRPOP
相当于是从list里面移除元素, 但是为(BLOCK式, 是RPOP的阻塞式版本)
LREM
移除元素, 和LPOP功能相似, 但是他可以制定移除的元素的值, 例如移除最先发现的2个USA
LREM push 2 "USA"
LINDEX
返回列表中,下表为index的元素
LINSERT
在某个制定的位置增加一个元素
LINSERT push BEFORE "UK" "Africa"
LTRIM
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除.
RPOPLPUSH
1: 将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
2: 将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
BRPOPLPUSH
为RPOPLPUSH的阻塞版本.
------------------------SET 操作
他是无需的,去重的,元素是字符串类型,最多包括2^32 - 1元素
SADD
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略.
SADD set "china" "china" "usa"
实际上只存了2个元素
SMEMBERS
查看key下面包含的元素
SMEMBERS set
返回2个元素
SREM
移除集合key中的一个或多个member元素,不存在的member元素会被忽略.
SREM set "usa"
SCARD
集合中元素的个数, 性能好.
SCARD set
返回3
SDIFF
找出集合1中有的, 2中没有的.
SADD set1 "1a" "2a" "3a"
SADD set2 "2a" "3a" "4a"
SDIFF set1 set2
返回 1a
SDIFFSTORE
同SDIFF相似, 只不过是讲差集存放到另一个set中.
SDIFFSTORE set set1 set2
SISMEMBER
检查元素是否在集合内.
SISMEMBER set1 "2a"
SUNION
取并集
SUNION set1 set2
返回 "1a" "2a" "3a" "4a"
SUNIONSTORE
与SUNION类似, 但是他将并集存储在destination中, 而不是返回.
SUNIONSTORE set set1 set2
SINTER
求交集
SINTER set1 set2
SINTERSTORE
功能和SINTER相似, 只不过是将交集存储在destination中.
SMOVE
移除到另外一个集合里面
SMOVE set1 set "2a"
SPOP
随机移除指定个数的元素, 而且返回移除的元素
SPOP set
SRANDMEMBER
随机返回指定个数的元素, 和SPOP类似, 但是不移除, 使用场景, 抽奖
SRANDMEMBER set 2
------------------------SortedSet 操作
<font color=#00ffff size=72>color=#00ffff</font>
有序集合
ZADD
将一个或多个元素及其score加到有序集合中.
ZADD sorted 1 "Chinese" 2 "English"
ZCOUNT
返回有序集中,score值在min和max之间的成员的数量.
ZCOUNT sorted 0 1
返回2
ZRANGE
返回有序集key中,指定区间内的成员.
ZRANGE sorted 0 -1
ZCARD
返回元素的个数
ZCARD sorted
返回2
ZSCORE
显示分值
ZSCORE sorted "English"
返回2
ZREM
删除一个值
zrem sorted "Chinese"
ZRANGEBYSCORE
按分值来取值
ZRANGEBYSCORE sorted 2 2
ZINCRBY
为有序集key的成员member的score值加上增量increment.
ZINCRBY sorted 3 "Chinese"
ZRANK
返回值在集合中的排名
ZRANK sorted "English"
ZREVRANK
逆序排名, 同ZRANK类似, 只不过是逆序.
ZREVRANK sorted "Africa"
ZREMRANGEBYRANK
移除有序集key中,指定排名(rank)区间内的所有成员
ZREMRANGEBYRANK sorted 1 2
ZREMRANGEBYSCORE
删除指定分值范围的元素
ZREVRANGE
同ZRANGE, 只不过是按照递减顺序来的.
ZREVRANGEBYSCORE
按照score来筛选
ZREVRANGEBYSCORE sorted 4 3
ZUNIONSTORE
取并集, 然后存入另外一个集合中
ZUNIONSTORE s3 2 s1 s2
ZINTERSTORE
求交集
ZINTERSTORE s3 2 s1 s2