目录
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度。已添加的数据是不能再往里添加。