redis命令汇总
目录
这是一篇似乎没啥意义的博文,因为redis的所有命令都可以在Redis官网中找到, 而且更详细。那至于为啥要写,我也不知道,估计是我发神经了吧🤣
键操作
x//设置一个名为bar的键redis>SET bar 1ok//获得redis中的所有键redis>KEYS *1)"bar"//判断键是否存在redis>EXISTS bar(integer)1//删除键redis>DEL bar(integer) 1redis>DEL bar(integer) 0//删除符合规则的键,返回删除个数#redis-cli KEYS 'bar*'|xargs redis-cli DEL//获取键值的数据类型redis>TYPE barstring
字符串类型
赋值与取值
xxxxxxxxxx//等价于num="value"redis>SET num valueokreids>GET key"value"//批量赋值redis>MSET bar1 1 bar2 2ok//批量取值redis>MGET bar1 bar21)"1"2)"2"数字操作
xxxxxxxxxx//加法redis>INCR num(integer)2redis>INCRBY num 3(integer)5//减法redis>DECR num(integer)4redis>DECRBY num 3(integer)1//加浮点数redis>INCRBYFLOAT num 1.1"2.1"位操作
xxxxxxxxxxredis>set foo barok//获取指定位置的二进制值redis>GETBIT foo 6(integer)1//设置指定位的二进制值,返回旧值redis>SET foo 6 0(integer)1//获取二进制值为1的个数redis>BITCOUNT foo(integer)10//位运算OR AND XOR NOTredis>SET foo1 aarOKredis>BITOP OR result foo foo1(integer)3redis>GET result"car"其他字符串操作指令
xxxxxxxxxx//向尾部追加值,返回追加后的字符串长度redis>set key hellookredis>APPEND key " world"(integer)11//获取字符串长度redis>STRLEN key(integer)11
散列类型
散列类型适合存储对象,键名可取对象.id,键值为对象属性。不支持嵌套即每个元素只能是字符串类型
赋值取值
xxxxxxxxxx//已存在(更新操作)返回0,新插入返回1redis>HSET people age 21(integer)1//当字段不存在时赋值redis>HSETNX people age 22(integer)0redis>HGET people age"21"redis>HMSET people name kimi sex maleOKredis>HMGET people name sex1)"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//只获取keyredis>HKEYS people1)"name"2)"age"3)"sex"//只获取valueredis>HVALS people1)"22"2)"kimi"3)"female"
列表类型
列表类型内部使用双向链表实现(double linkedlist)实现;列表类型适合用来记录日志,保证插入新日志的速度不会受已有数据影响;列表类型还可以作为队列使用
增加\弹出\设置\获得元素
xxxxxxxxxxredis>LPUSH mylist 1(integer)1redis>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 4OK
获取列表中元素个数
xxxxxxxxxxredis>LLEN mylist(integer)0
获取/保留列表片段
xxxxxxxxxx//1. 支持负索引//2. 获取start和stop之间的元素,包含两端元素LLRANGE numbers start stopredis> LLRANGE mylist 0 11)"1"2)"2"redis> LLRANGE mylist -2 -11)"2"2)"3"//只保留列表指定片段,删除start->end区间之外的元素LTRIM key start end//像列表中插入元素LINSERT key BEFORE|AFTER pivot value
删除列表中的值
xxxxxxxxxxLREM 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 keyredis>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
有序集合类型
有序的,根据‘分值’大小排序;使用散列表和跳跃表实现,相比列表类型读取中间的数据很快;有序集合要比列表类型更耗费内存
增加、获取元素
xxxxxxxxxxZADD key score member [score member...]//加入元素,如果member已存在,则用score替换已有的分数。redis>ZADD myset 80 A 57 B(integer)2redis>ZADD myset 60 A(integer)0//获得元素的分数ZSCORE key memberredis>ZSCORE myset A"60"//增加某个元素的分数ZINCRBY key increment member//获得排名在start-stop范围内的元素//WITHSCOORE返回值是否带分数ZRANGE key start stop [WITHSCORES]//获取元素的排名ZRANK key member //分数最小的排0ZREVRANK 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