五种常用数据类型:string、hash、list、set和sorted_set。
redis数据存储格式:
增加/修改数据
set key value
获取数据
get key
删除数据
del key
增加/修改多个数据
mset key1 value1 key2 value2
获取多个数据
mget key1 key2
获取数据字符串长度
strlen key
追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
append key value
设置数据增加指定范围的值
incr key
incrby key increment
incrbyfloat key increment
设置数据减少指定范围的值
decr key
decr key increment
Tips:
设置数据具有指定的生命周期
setex key seconds value
psetex key milliseconds value
Tips:
在redis中存储数据库(如MySQL)的用户信息,以用户主键和属性值为key,后台设定定时刷新策略。
也可以用json格式存储用户信息,更推荐hash类型,方便修改。
对象类的存储如果使用string类型或者json格式,更新需求操作会显得笨重。
hash存储结构优化
添加/修改数据
hset key field value
获取数据
#只显示field的value
hget key field
#所有field和value都显示
hgetall key
删除数据
hdel key filed1
添加/修改多个数据
hmset key field1 value1 field2 value2
获取多个数据
hmget key field1 field2
获取哈希表中字段的数量
hlen key
获取哈希表中是否存在指定的字段
hexists key field
获取某个哈希类型中所有的字段名或字段值
hkeys key
hvals key
设置指定字段的数据类型增加指定范围的值
hincrby key field increment
hincrbyfloat key field increment
电商网站购物车设计与实现:用户id作为key,商品id作为field,商品数量作为value。每个用户肚饿购物车的商品记录保存为一条field。但这种方式并没有保存完整的商品信息。
改进1:
#如果有key的field字段,则不添加
hsetnx key field value
添加/修改数据
#从左端添加
lpush key value1
#从右端添加
rpush key value1
获取数据
#从左边开始遍历数据,下标start到stop。stop为-1是倒数第一个
lrange key start stop
#从左边开始遍历数据,下标为index的数据
lindex key index
#列表长度
llen key
获取并移除数据
#从左侧移除
lpop key
#从右侧移除
rpop key
规定时间内获取并移除数据
#指定时间内如果列表有数据则弹出来,没有则等待。超过时间就会结束等待
blpop key1 timeout
brpop key1 timeout
brpoplpush source destination timeout
移除指定数据
#从左往右删除count个值为value的元素
lrem key count value
Tips:
添加数据
sadd key member1 member2
获取全部数据
smembers key
删除数据
srem key member1
获取集合数据总量
scard key
判断集合是否包含指定数据
sismember key member
随机获取集合中指定数量的数据
srandmember key count
随机获取集合中的某个数据并将该数据移出集合
spop key
Tips:
求两个集合的交、并、差集
sinter key1 key2
sunion key1 key2
#key1有 key2没有的集合
sdiff key1 key2
求两个集合的交、并、差集并存储到指定集合中
#结果存到destination中
sinterstors destination key1 key2
sunionstors destination key1 key2
sdiffstors destination key1 key2
将指定数据从原始集合移动到目标集合中
smove source destination member
Tips:
Tips:
添加数据
zadd key score1 member1 score2 member2
获取全部数据
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
删除数据
zrem key member member
按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]
按条件删除数据
#根据索引获取
zremrangebyrank key start stop
#根据score获取
zremrangebyscore key min max
注意:
获取集合数据总量
zcard key
zcount key min max
集合交、并操作
#numkeys代表集合数量
zinterstore destination numkeys key1 key2...
zunionstore destination numkeys key1 key2...
获取数据对应的索引(排名)
zrank key member
zrevrank key member
score值获取与修改
zscore key member
zincrby key increment member
Tips:
Tips: