5种基本类型 string list hash set zset
set key value 存储 key value
get key 获取key的value
exists key 判断是否存在key
key * 列出所有的key
flushall /flushdb 清空
expire key time 设置过期时间(秒)
ttl key 查看key剩余过期时间(秒)
type key 查看key的类型
-----String-----
append key value 在key的value值追加字符串
strlen key 获取key的value值长度
getrange key i j 获取key的v值截取下标i到j(j为-1 获取全部字符串 等于get k)
setrange key i xxx 修改key的v值下标为i及后面对应的xxx长度-1的值
incr key key自增1
decr key key自减1
incrby key v key的value值增加v
decrby key v key的value值减去v
setex key time value 设置过期时间
setnx key value 不存在则设置------分布式锁------
mset k1 v1 k2 v2… 批量设置
mget k1 k2… 批量获取
msetnx k1 v1 k2 v2 不存在则批量设置(原子操作,任何一个存在则失败)
#对象
set object:id {属性1:属性1值,属性2:属性2值…}
mset object🆔属性1 属性1值 object🆔属性2 属性2值…
mget object🆔属性1 object🆔属性2…
getset 先get再set
-----list-----列表:可以想象成链表,可以头插,可以尾插;如果列表不存在,则新建,存在则新加入;里面的值可重复
lpush list v1 在左侧放入数据
lrange list i j 从左侧获取
rpush list v2 在右侧放入数据
lpop list 从左侧移除第一个
rpop list 从右侧移除第一个
lindex list i 根据下表获取值
llen list 获取list长度
lrem list n xxx 移除list中n个xxx
ltim list i j 根据下表截取(只保留被截取的)
rpoplpush list1 list2 移除list1最后一个元素并放入list2
lset list i v 为指定下表赋值(前提是list及该下标存在)
linsert list after/before v1 v2 将v2插入到list中v1后面/前面
-----set-----集合:无序,不重复;
sadd myset v1 添加
smembers myset 获取
sismember myset v1 判断v1是否在set里
scard myset 获取set中的个数
srem myset v1 移除
spop myset 随机删除
srandmember myset n 随机抽出n个元素
smove set1 set2 从s1随机移除一个 保存到s2
sdif s1 s2 差集
sinter s1 s2 交集
sunion s1 s2 并集
-----hash-----map:k - map 更适合存储对象
hset myhash k1 v1 存值
hget myhash k1 取值
hmset myhash k1 v1 k1 v2… 批量设置
hmget myhash k1 k1… 批量获取
hgetall myhash 获取所有值
hdel myhash k1 删除k1
hlen myhash 获取长度
hexists myhash k1 判断是否存在
hkeys myhash 获取所有的k
hvals myhash 获取所有的v
-----zset-----有序集合
zadd myset 1 one 设置
zadd myset 2 two 3 three 批量设置
-----geo-----地理位置 基于zset
geoadd china:city 经度 维度 城市 添加
geoadd china:city 经1 维1 名1 经2 维2 名2 批量添加
geopos china:city 城市名1 获取
geodist china:city 名1 名2 m/km/mi/ft 获取距离米/千米/英里/英尺
georadius china:city 100 30 1000 km [withdist withcoord count 1] 获取 100 30 经纬度为中心1000km为半径的城市[显示距离 显示信息 显示1个]
georadiusbymember china:city beijing 1000 km 获取china:city中距离北京1000km内的城市
-----hyperlolog----页面统计(容错率0.81%) 存储需要12k
pfadd mykey v1 v2 v3… 设置
pfcount mykey 统计数量
pfmerge mykey3 mykey mykey2 把mykey和mykey2合并成mykey3(去重)
-----bitmaps-----位存储(占1bit) --1存在 0不存在
setbit mykey k v 设置(v=0 or 1)
getbit mykey k 获取
bitcount mykey 统计为1的个数
-----事务-----先放入队列,再依次顺序执行;
如果命令都问题,则事务全部不执行;如果有语法性问题(如1/0),其他事务继续执行
一次性、顺序性、排他性,没有原子性
multi 开启事务
… 各种命令
discard 取消/放弃事务
exec 执行事务
-----乐观锁-----
watch key 加锁
… 操作
unwatch 解锁