redis命令汇总
目录
这是一篇似乎没啥意义的博文,因为redis的所有命令都可以在Redis官网中找到, 而且更详细。那至于为啥要写,我也不知道,估计是我发神经了吧🤣
键操作
x//设置一个名为bar的键
redis>SET bar 1
ok
//获得redis中的所有键
redis>KEYS *
1)"bar"
//判断键是否存在
redis>EXISTS bar
(integer)1
//删除键
redis>DEL bar
(integer) 1
redis>DEL bar
(integer) 0
//删除符合规则的键,返回删除个数
#redis-cli KEYS 'bar*'|xargs redis-cli DEL
//获取键值的数据类型
redis>TYPE bar
string
字符串类型
赋值与取值
xxxxxxxxxx
//等价于num="value"
redis>SET num value
ok
reids>GET key
"value"
//批量赋值
redis>MSET bar1 1 bar2 2
ok
//批量取值
redis>MGET bar1 bar2
1)"1"
2)"2"
数字操作
xxxxxxxxxx
//加法
redis>INCR num
(integer)2
redis>INCRBY num 3
(integer)5
//减法
redis>DECR num
(integer)4
redis>DECRBY num 3
(integer)1
//加浮点数
redis>INCRBYFLOAT num 1.1
"2.1"
位操作
xxxxxxxxxx
redis>set foo bar
ok
//获取指定位置的二进制值
redis>GETBIT foo 6
(integer)1
//设置指定位的二进制值,返回旧值
redis>SET foo 6 0
(integer)1
//获取二进制值为1的个数
redis>BITCOUNT foo
(integer)10
//位运算OR AND XOR NOT
redis>SET foo1 aar
OK
redis>BITOP OR result foo foo1
(integer)3
redis>GET result
"car"
其他字符串操作指令
xxxxxxxxxx
//向尾部追加值,返回追加后的字符串长度
redis>set key hello
ok
redis>APPEND key " world"
(integer)11
//获取字符串长度
redis>STRLEN key
(integer)11
散列类型
散列类型适合存储对象,键名可取对象.id
,键值为对象属性。不支持嵌套即每个元素只能是字符串类型
赋值取值
xxxxxxxxxx
//已存在(更新操作)返回0,新插入返回1
redis>HSET people age 21
(integer)1
//当字段不存在时赋值
redis>HSETNX people age 22
(integer)0
redis>HGET people age
"21"
redis>HMSET people name kimi sex male
OK
redis>HMGET people name sex
1)"kimi"
2)"male"
redis>HGETALL people
...
其他散列类型命令
xxxxxxxxxx
//判断字段是否存在
redis>HEXISTS people age
(integer)1
//增加数字
redis>HINCRBY people age 1
(integer)22
//删除字段
redis>HDEL people sex
(integer)1
//只获取key
redis>HKEYS people
1)"name"
2)"age"
3)"sex"
//只获取value
redis>HVALS people
1)"22"
2)"kimi"
3)"female"
列表类型
列表类型内部使用双向链表实现(double linkedlist)实现;列表类型适合用来记录日志,保证插入新日志的速度不会受已有数据影响;列表类型还可以作为队列使用
增加\弹出\设置\获得元素
xxxxxxxxxx
redis>LPUSH mylist 1
(integer)1
redis>RPUSH mylist 0
(integer)2
//可加入多个
LPUSH/RPUSH mylist val1 val2 val3....
//弹出一个值,并从列表删除
redis>LPOP mylist
"1"
redis>RPOP mylist
"0"
//获取指定索引的元素值
redis>LINDEX mylist 1
"1"
//设置指定索引的元素值
redis>LSET mylist 1 4
OK
获取列表中元素个数
xxxxxxxxxx
redis>LLEN mylist
(integer)0
获取/保留列表片段
xxxxxxxxxx
//1. 支持负索引
//2. 获取start和stop之间的元素,包含两端元素
LLRANGE numbers start stop
redis> LLRANGE mylist 0 1
1)"1"
2)"2"
redis> LLRANGE mylist -2 -1
1)"2"
2)"3"
//只保留列表指定片段,删除start->end区间之外的元素
LTRIM key start end
//像列表中插入元素
LINSERT key BEFORE|AFTER pivot value
删除列表中的值
xxxxxxxxxx
LREM key count value
//1. count>0,从列表左边开始删除count个值为value的元素
//2. count<0,从列表右边开始删除count个值为value的元素
//3. count=0,删除所有值为value的元素
//4. 返回删除的元素个数
其他
xxxxxxxxxx
//将元素从一个列表转到另一个列表
POPLPUSH source destination
//先从source右边弹出一个元素,然后加入到destination左边
//当source和destination相等时,会不断将队尾元素已到队首
RPOPLPUSH source destination
集合类型
集合类型是使用值为空的散列表(hash table)实现
获取、删除
xxxxxxxxxx
//向集合增加一个或多个元素,返回成功加入的元素个数
SADD key member [member...]
redis>SADD letters a b c d
(integer)4
//向集合中删除一个或多个元素,返回删除成功的个数
SREM key member [member...]
redis>SREM letters d
(integer)1
//获得集合中的所有元素
SMEMBERS key
redis>SMEMBERS letters
"c"
"a"
"b"
//随机获得集合中的元素
//count不填,默认获取一个元素
//count>0,随机获取count个不重复元素
//count<0,随机获取|count|个元素,可能重复
SRANDMEMBER key [count]
集合运算
xxxxxxxxxx
//差集
SIDFF key [key ...]
//交集
SINTER key [key ...]
//并集
SUNION key [key ...]
//进行集合运算并将结果存储
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]
其他
xxxxxxxxxx
//获取集合中元素个数
SCARD key
//从集合中弹出一个元素
SPOP key
有序集合类型
有序的,根据‘分值’大小排序;使用散列表和跳跃表实现,相比列表类型读取中间的数据很快;有序集合要比列表类型更耗费内存
增加、获取元素
xxxxxxxxxx
ZADD key score member [score member...]
//加入元素,如果member已存在,则用score替换已有的分数。
redis>ZADD myset 80 A 57 B
(integer)2
redis>ZADD myset 60 A
(integer)0
//获得元素的分数
ZSCORE key member
redis>ZSCORE myset A
"60"
//增加某个元素的分数
ZINCRBY key increment member
//获得排名在start-stop范围内的元素
//WITHSCOORE返回值是否带分数
ZRANGE key start stop [WITHSCORES]
//获取元素的排名
ZRANK key member //分数最小的排0
ZREVRANK key member //分数最大的排0
//获取指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count]
获取元素个数
xxxxxxxxxx
//获得集合中元素的数量
ZCARD key
//获得指定分数范围内的元素个数
ZCOUNT key min max
删除元素
x
//删除一个或多个元素
ZREM key member [member...]
//按照排名范围删除元素
ZREMRANGEBYRANK key start stop
//按照分数范围删除元素
ZREMRANGEBYSCORE key min max
计算有序集合的交集
x
ZINTERSTORE destination numKeys key [key...] [WEIGHTS weight [weight ...]] [AGREGATE SUM|MIN|MAX]
//numKeys 合并的集合数量
//WEIGHTS 各个集合的权重,集合在参与计算时元素的分数会被乘上权重
//AGREGATE 同元素合并策略,取sum还是取min还是取Max