String(字符串)
使用场景:
- 计数器
- 统计多单位的数量
- 粉丝数
- 对象缓存存储
#设置值
set key value
#获得值
get key
#获得所有的key值
keys *
#判断某一个key是否存在
exists key
#追加字符串,如果当前key不存在,就相当于设置值
append key “value”
#获取字符串的长度
strlen key
#自增1
incr key
#自减一
decr key
#自定义增量
incrby key value
#自定义减量
decrby key value
#截取字符串
getrange key 开始索引 结束索引
#截取所有字符串
getrange key 0 -1
#替换指定位置开始的字符串
setrange key 开始索引 结束索引
#设置过期时间 setex(set with expire)
setex key 过期时间 value
#获取某一个key的剩余时间
ttl key
#不存在时再设置setnx(set if not exist),分布式锁中常常使用。如果存在就创建失败
setnx key value
#同时设置多个值
mset k1 v1 k2 v2 k3 v3
#同时获取多个值
mget k1 k2 k3
#原子性操作msetnx,一起成功,一起失败
msetnx k1 v1 k2 v2
#存储对象,值为json类型
set k1:k2:k3 value
#先get再set,如果不存在值则返回nil,如果存在,获取原来值并赋予新的值
getset key value
List(列表)
使用场景:
- 消息队列
#将一个值或多个值,插入到列表头部(左)
lpush key value
#获取list的所有值
lrange key 0 -1
#获取list指定区间的值
lrange key 开始索引 结束索引
#将一个值或者多个值插入列表尾部(右)
rpush key value
#移除列表第一个元素
lpop key
#移除列表最后一个元素
rpop key
#通过索引获得值
lindex key 索引
#列表的长度
llen key
#移除list中指定个数的value
lrem key 个数 value
#通过索引截取指定的长度,这个操作会影响到原数据,起修剪的作用
ltrim key 开始索引 结束索引
#移除列表最后一个元素,并将其移动到新的列表中
rpoplpush key newKey
#判断列表是否存在
exists key
#将列表中指定索引位置的值替换掉,如果存在就会执行,不存在就会报错
lset key 索引 value
#将某个值插入到已经存在的元素的前面或者后面
linsert key after/before value newValue
Set(集合)
#添加元素
sadd key value
#查看set的所有值
smember key
#判断某一个值是否存在
sismember key value
#获取set集合中的元素个数
scard key
#移除set中的指定元素
srem key value
#随机抽取一个元素
srandmember key
#随机抽取指定个数的元素
srandmember key 个数
#随机移除元素
spop key
#将一个指定的值,移动到另外一个集合
smove key newKey value
#差集
sdiff key1 key2
#交集
sinter key1 key2
#并集
sunion key1 key2
Hash(哈希)
使用场景:
- 对象的存储
#插入一个值
hset 集合 key value
#插入多个值
hset 集合 key value key value key value
#获取一个字段值
hget 集合 key
#获取多个字段值
hget 集合 key key key
#获取全部数据
hgetall 集合
#删除指定的key,value也会跟着消失
hdel 集合 key
#获取集合中的数量
hlen 集合
#判断集合中指定字段是否存在
hexists 集合 key
#只获得所有的key
hkeys 集合
#只获得所有的value
hvals 集合
#指定增量
hset 集合 key 增量
#存在设置,不存在不能设置
hsetnx 集合 key value
Zset(有序集合)
使用场景:
- 排行榜
- 成绩,工资排序
- 普通消息,重要消息的权重判断
#添加一个值
zadd key 计数位 value
#添加多个值
zadd key 计数位 value 计数位 value 计数位 value
#获取所有值
zrange key 0 -1
#从小到大排序
zrangebyscore key -inf +inf
#从大到小排序
zrevrange key 0 -1
#从小到大排序显示附带字段
zrangebyscore key -inf +inf with计数位
#移除有序集合中指定的元素
zrem key value
#获取集合中的个数
zcard key
geospatial(地里位置)
使用场景:
- 朋友的定位
- 附近的人
- 距离计算
#添加地理位置
geoadd key 经度 纬度 value
#获取指定key的经纬度
getpos key value
#两个地理位置之间的距离
单位:
- m米
- km千米
- mi英里
- ft英尺
geodist key value1 value2 单位
#以给定的精度为中心,找出某一半径内的元素
georadius key 经度 纬度 距离 单位
#以给定的精度为中心,找出某一半径内的元素,并显示距离
georadius key 经度 纬度 距离 单位 withdist
#以给定的精度为中心,找出某一半径内的元素,并显示他人的信息
georadius key 经度 纬度 距离 单位 withcoord
#以给定的精度为中心,找出某一半径内的元素,并显示指定数量的信息
georadius key 经度 纬度 距离 单位 withcoord/withdist count 显示的数量
#找出位于指定元素周围的其他元素
georadiusbymember key 元素 距离 单位
#返回指定元素的hash字符串
geohash key 元素
geo底层的实现原理就是zset,我们可以使用zset命令来操作geo,比如删除,查看所有元素等命令
hyperloglog(基数统计)
什么是基数? 不重复的元素,可以接受误差
优点:占用内存固定,只需要12kb内存
#创建元素
pfadd key value1 value2 value3 value4 value5 value6 value7 value8 value9
#统计元素中的基数数量
pfcount key
#合并两组元素到一个新的key中
pfmerge newKey key1 key2
bitmaps(位存储)
bitmaps数据结构,都是二进制来进行存储
使用场景:
只要是只有两个状态的,都可以用bitmaps
#存值
setbit key 计数位 0/1
#取值
getbit key 计数位
#统计全部
bitcount key