Redis
nosql redis install
redis支持五种数据结构 string list hash set sorted-set
redis本身是一个key-value的数据结构
STRING
- 添加/修改数据
set <key> <value>
- 添加/修改多个数据
set <key1> <value1> <key2> <value2> ……
- 获取数据
get <key>
- 获多个取数据
get <key1> ……
- 删除数据
del <key>
- 获取字符数据长度
strlen <key>
- 追加
append <key>
扩展
- 设置数值数据增加指定范围的值
incr key
incrby key increment
incrbyfloat key increment
- 减少
decr key
decrby key increment
设置生命周期
setex <key> <seconds|秒> <value>
psetex <key> <milliseconds|毫秒> <value>
-
String应用场景
- 应用于各种结构性非结构性高热度数据访问加速,
e.g.:set 微博粉丝数 表名:主键名:主键值:字段名 10
- 应用于各种结构性非结构性高热度数据访问加速,
HASH
- 添加/修改数据
hset <key> <filed> <value>
hmset <key> <filed1> <value1> <filed2> <value2>
- 获取数据
hget key field
hgetall key
- 删除数据
hdel key field1 [field2]
扩展
- 获取所有fields和values
hkeys key
hvals key
- 增加指定
hincrby key field increment
hincrbyfloat key field increment
- 应用场景
秒杀抢购限购
电商网站购物车
string主读,整体存储json。hash方便修改,不支持哈希嵌套,不是所有对象类型都适合存储哈希
LIST
- 添加/修改数据
lpush key <value1> [value2] ……
rpush key <value1> [value2] ……
- 获取数据
lrange key start stop
lindex key index
llen key
- 获取并且移除数据
lpop key
rpop key
blpop key [key ……] timeout # 阻塞到timeout
rlpop key [key ……] timeout
扩展
- 移除指定数据
lrem key count value
应用
具有操作顺序的场景,操作数据通常以队列或者栈的形式
微博的关注和粉丝列表
SET
存储大量数据,更高的查询效率
- 添加数据
sadd key member1 [m2 ……]
查询所有数据
smembers key
删除数据
srem key members1 [m2 ……]
获取集合的数据总量
scard key
判断集合种是否有指定的数据
sismembers key member
扩展
- 随机获取集合种指定数量的数据集
srandmember key [count]
- 随机获取并且移除
spop key
- 交集,并集,差集
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
- 求两个集合的交集,并集,差集存储到指定位置
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
- 把指定数据移动到目标集合
smove source destination member
应用
随机推荐类信息检索,例如热点歌单,新闻推荐等等
推荐共同好友,共同关注等等,
黑名单反爬虫访问控制,白名单等等
PV统计单次访问,string的incr,UV不同用户访问两,记录不同cookie数,IP记录不同ip数
SORTED_SET
有序集合
- 添加数据
zadd key score1 member1 [s2 m2 [权重 值]]
- 获取全部数据
zrange key start stop [WITHSCORES]
zrerange key start stop [WITHSCORES] # 反向查询
- 删除数据
zrem key memeber [member ……]
- 按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrerangebyscore key min max [WITHSCORES] [LIMIT]
- 按条件删除
zremrangebyrank key start stop # 按索引
zremrangebyscore key min max
应用
排行榜实现
定时任务,带权重任务
- 获取数据对应的索引
zrank key member
zrerank key member