redis set list
List
list:
插入命令:lpush / rpush
查看list列表所有数据(-1 表示最后一个):lrange key 0 -1
查看列表长度(key 不存在则长度返回0 ): llen key
list长度
获取下表 为 0 的元素
修改下标为0的元素,改为haha
移除列表的第一个元素 或最后一个元素
lpop
rpop
在 列表key1中 元素v3前 插入元素ccc,在v3后插入元素ddd
尾删头插:rpoplpush list1 list2
在key1 尾删除一个元素,并把这个元素插入到 key2 的头部
Set集合:功能和list相似,只是去重了元素
添加和查看
集合是否包含元素 sismember key value
删除集合中的元素
随机弹出一个元素
随机弹出集合中两个元素,但是不删除原集合元素
将v2从集合 set1 移到 集合set2中
交集 sinter
并集 sunion
差集( set1全部元素且不包含set2元素 ): sdiff set1 set2
zset集合,也叫sort set: 在set基础上加了排序功能
增加 两条数据 并按着score 升序 或降序
降序
返回指定score区间的元素数量
返回指定元素的score
指定元素的score + 100 或 -100
升序/降序score 获取指定元素的排名
移除指定元素 zrem key value
zset 适合做延时队列,超时未支付删除该订单
例如:时间戳作为score,订单号为value
zadd dingdanset 18907234 D1001
zadd dingdanset 18907235 D1002
轮询获取Zset集合,判断时间戳是否超时
伪代码
while(true){
Thread.sleep(500)
//获取set 集合并按着时间戳升序排序
set<object> sets = redis.get(key)
//只取第一个
int score = sets[0].get("score");
if( 当前时间戳 >= score ){
//做未支付的逻辑
...
//且移除该订单
zrem(dingdanset,D1001);
}
}