目录
Key
字符串String
常用命令
列表List
常用命令
集合Set
常用命令
Hash哈希
键值对集合
有序集合Zset
Redis新数据类型
Key
| set key value... | 添加key |
| keys * | 查看当前库中所有的key |
| exist key | 该key是否存在 |
| type key | key的类型 |
| del key | 删除key |
| unlink key | 根据value选择非阻塞删除(没有直接删除) |
| expire key time(数字) | 为给定的key设置过期时间(秒) |
| ttl key | 查看还有多少秒过期(-1表示永不过期,-2表示已过期) |
select 切换数据库
dbsize 查看当前数据库key的数量
flushdb 清空当前库
flushll 通杀全部库
字符串String
常用命令
| set <key> <value> | 添加或覆盖键值对数据 |
| get key | 查询对应键值 |
| append key value | 在后面继续添加(不是覆盖) |
| strlen key | 获取值的长度 |
| setnx key value | 只有key不存在,才能设置成功 |
| incr key | 将key中存储的数字值增1(只能对数字类型操作,如果为空,新增值为1) |
| decr key | 将key中存储的数字值减1 |
| incrby key 数字 | 自定义步长 |
| decrby key 数字 | 自定义步长 |
| mset key1 value1 key2 value2 | 同时设置一个或多个key-value对 |
| mget key1 value1 key2 value2 | 同时获取一个或多个key-value对 |
| msetnx key1 value1 key2 value2 | 同时设置一个或多个key-value对,当且仅当所有的key都不存在,有一个存在都失败 |
| getrange key 起始位置 终止位置 | 获取值的范围,类似substring 前后都包 |
| setrange key 起始位置 value | 用value覆写key所存储的字符串值 |
| setex key 过期时间 value | 设置值的时候就可以设置过期时间 |
| getset | 以新换旧,设置新值的同时获得旧值 |
数据结构
简单的动态字符串
列表List
单键多值
常用命令
| lpush/rpush k1 v1 v2 v3 | 从左边或者右边插入一个或多个键值对 (头插法,尾插法) |
| lpop/rpop <key> | 从左边或右边吐出一个值,值光键亡 |
| lrange <key> <start> <end> | 按照索引下标获得元素(从左到右) |
| rpoplpush <key1> <key2> | 从key1列表右边吐出来一个值,插到key2列表左边 |
| lindex <key> <index> | 按照索引下标获得元素 |
| llen <key> | 获取列表长度 |
| linsert <key> before/after <value> <newvalue> | 在value的前面/后面加上newvalue |
| lrem key n value | 从左边删除n个value |
| lset key index value | 将列表key下标为index的值替换成value |
底层结构
quicklist快速列表(双向链表)
集合Set
与list类似,但是set中元素不可以重复,无序集合,O(1)
常用命令
| sadd key value value | 将一个或多个元素member添加到集合key中,已存在的将被忽略 |
| smembers key | 取出集合中的所有值 |
| sismember key value | 判断集合key中是否存在value值,1或0 |
| scard key | 返回该集合元素的个数 |
| srem key value1 value2 | 删除集合中的某个元素 |
| spop key | 随机取出一个值 |
| srandmember key n | 随机取出n个值,但不会从集合中删去 |
| smove | 把一个值从一个集合中移到另一个集合 |
| sinter key1 key2 | 返回两个集合的交集元素 |
| sunion key1 key2 | 返回两个集合的并集元素 |
| sdiff key1 key2 | 返回两个集合的差集元素(key1-key2) |
Hash哈希
键值对集合
是一个string类型的field和value的映射表,类似Java中的map

| hset key field value | 给key集合中的field键赋值value |
| hget key1 filed | 从key1集合filed取出value |
| hmset key1 field1 value1 field2 value2 | 批量设置hash值 |
| hexists key1 field | 查看哈希表key中,给定域field是否存在 |
| hkeys key | 列出hash集合中所有的field |
| hvals key | 列出hash集合中所有value |
| hincrby key field increment | 为hash集合key中的域field的值加上增量 increment |
| hsetnx key field value | 将hash表key中的filed的值设置为value,当且仅当域field不存在 |
有序集合Zset
与set相似,但是是有序的。集合中的每个成员都关联了一个评分,这个评分被用来按照最低分到最高分的方式排序集合中的成员。集合成员是唯一的,但评分可以重复。
| zadd key score1 value1 score2 value2 | 将一个或多个member元素及其score值加入到有序集合key中 |
| zrange key start end [WITHSCORES] | 返回有序集合key中,下标在start和stop之间的元素 |
| zrangebyscore key min max [WITHSCORES] | 返回有序集key中,所有score介于min和max之间的成员,按score从小到大显示 |
| zrevrangebyscore key max min [WITHSCORES] | 同上,改为从大到小排序显示 |
| zincrby key increment value | 为元素的score加上增量 |
| zrem key value | 删除该集合下指定值的元素 |
| zcount key min max | 统计min和max范围中的元素个数 |
| zrank key value | 查看元素的排名 |
数据结构
等价于Java的Map<String, Double>
hash+跳跃表
Redis新数据类型
Bitmaps

HyperLogLog

| pfadd key element | 添加指定元素 |
| pfcount key | 统计基数数量 |
| pfmerge destkey sourcekey .. | 将一个或多个HLL合并后的结果存在另一个HLL中 |
Geographic(GEO)
该类型就是元素的二维坐标,在地图上就是经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度hash等常见操作。
| geoadd key longitude latitude member... | 添加地理位置(经度,纬度,名称) |
| geopos key member | 根据名称取位置 |
| geodist key member1 member2 [m|km|ft|mi] | 获取两个位置之间的直线距离 |
| georadius key longitude altitude radius m|km|ft|mi | 以给定的经纬度为中心,找出某一半径内的元素 |
有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。已添加的数据是不能再往里添加。