注:此处的操作不全,仅做参考。
字符串类型
设置:SET "key" "value"
获取:GET "key",如果GET一个不存在的键返回(nil)
返回字符串长度:STRLEN "key"
追加:APPEND "key" "append value"
范围并返回新的字符串长度:SETRANGE "key" startPos "value"
不存在时SET:SETNX "key" "vlaue"
存在时才SET:SETXX "key" "vlaue"
使用MSET和可一次性设置或获取多个键的值,由于操作的原子性,可以节省网络开销。
字符串的三种编码方式:int、embstr、raw。使用OBJECT ENCODING "key"来获取内部编码。
列表类型
插入元素:LPUSH "key" value1 value2(添加到列表左端)
RPUSH "key" value1 value2(添加到列表右端)
LINSERT "key" AFTER/BEFORE "pos_value" "new_value"(插入列表的枢轴元素之前或之后)
获取元素:LRANGE "key" 0 -1
根据索引获取元素:LINDEX "key" index
删除单个元素:LPOP/RPOP "key"
删除多个元素:LTRIM "key" 1 -1
设置指定索引处的元素值:LSET "key" index "value"
LPOP和RPOP的阻塞版本:BLPOP和RBPOP,可以设置超时时间,0为永久等待。BRPOP "key" wait_time
哈希类型
设置元素:HSET hash_name key value
HMSET hash_name key1 value1 key2 value2 ...
获取元素:HGET hash_name key
HMGET hash_name key1 key2 ...
判断哈希中是否存在某个字段:HEXISTS hash_name key
获取哈希中的所有字段和值:HGETALL hash_name(不建议对数据量大的哈希使用HGETALL,会阻塞服务器)
删除字段:HDEL hash_name key1 key2
增量获取所有字段和值:HSCAN hash_name cursor [MATCH pattern] [COUNT number]
集合类型
添加元素:SADD set_name value1 value2 ...
一个元素是否在集合中:SISMEMBER set_name value
删除元素:SREM set_name value
获取集合中成员的数量:SCARD set_name
列出所有元素:SMEMBERS set_name(不建议,会阻塞服务器,推荐SSCAN)
计算并集:SUNION、SUNIONSTORE
计算交集:SINTER、SINTERSTORE
计算差集:SDIFF、SDIFFSTORE
举例:SINTER set_name1 set_name2
SINTERSTORE new_set set_name1 set_name2
有序集合
添加元素:ZADD set_name weight1 value1 weight2 value2 ...
获取所有排名:ZREVRANGE set_name 0 -1 WITHSCORES
给某元素的权重加1:ZINCRBY set_name 1 value
获取某元素排名:ZREVRANK set_name value
获取某元素的权重:ZSCORE set_name value
合并两个集合:ZUNIONSTORE new_set x set_name1 set_name2 ... set_namex WEIGHTS 1 2
仅在元素不存在时添加新元素:ZADD set_name NX weight value
仅更新存在元素:ZADD set_name XX weight value
HyperLogLog
如果不想获取元素的内容,而只想得到不同值的个数,可以使用HyperLogLog来优化使用集合类型时存在的内存和性能问题。
添加元素:PFADD set_name value
获取不同元素的数量:PFCOUNT set_name
合并:PFMERGE set1 set2 set3 ...
Geo类型
支持存储和查询地理位置相关场景中的坐标。
添加元素:GEOADD geo_set x1 y1 value1 x2 y2 value2 ...
获取指定元素的坐标:GEOPOS geo_set value
距离某个坐标位置在5km以内的元素,中心点由指定坐标决定:GEORADIUS geo_set x y 5 km
两个元素的距离:GEODIST geo_set value1 value2 km
找出制定范围的成员,中心的由集合元素决定:GEORADIUSBYMEMBER geo_set value 100 km
键管理
Redis键的个数:DBSIZE
获取所有键:1.KEYS * 2.SCAN
删除键:DEL key1 key2 ...
异步删除数量大的key(重开线程进行异步删除,不会阻塞主进程的事件处理):UNLIKE key
获取键的类型:TYPE key
重命名键:RENAME key new_key