Redis
所有的数据结构都可以设置过期时间,时间到了,Redis
会自动删除相应的对象。需要注意的是过期是以对象为单位,比如一个 hash
结构的过期是整个 hash
对象的过期,而不是其中的某个子 key
。
还有一个需要特别注意的地方是如果一个字符串已经设置了过期时间,然后你调用了 set
方法修改了它,它的过期时间会消失。
127.0.0.1:6379> set str "hello world"
127.0.0.1:6379> expire str 300
(integer) 1
127.0.0.1:6379> ttl str
(integer) 295
127.0.0.1:6379> ttl str
(integer) 294
127.0.0.1:6379> set str "hello"
127.0.0.1:6379> ttl str
(integer) -1
127.0.0.1:6379>
zset 可能是 Redis 提供的最为特色的数据结构,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。它的内部实现用的是一种叫做「跳跃列表」的数据结构。zset 中最后一个 value 被移除后,数据结构自动删除,内存被回收。zset 可以用来存粉丝列表,value 值是粉丝的用户 ID,score 是关注时间。我们可以对粉丝列表按关注时间进行排序。zset 还可以用来存储学生的成绩,value 值是
1、zadd :添加元素,格式是:zadd zset的key score值 项的值, Score和项可以是多对,score可以是整数,也可以是浮点数,还可以是+inf表示无穷大,-inf表示负无穷大
操作如下:
java示例代码:
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
* redis中对于ZSet类型的: zadd 操作示例
* zadd :添加...
Redis不支持给set里面的成员设置过期时间,目前只能给顶级key设置过期时间。
换个思路,可以利用有序数组,存的时候将score设置成当时的时间戳。再跑个计划任务,每天晚上12点后将score小于12点时间戳的成员清除掉就行了。
redisTemplate.opsForZSet().add(key,object,System.currentTimeMillis()/1000);
sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加
修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解为有
两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个double
docker load 出错 open /var/lib/docker/tmp/docker-import-837327978/bin/json: no such file or directory
24001
Ubuntu 安装 NVIDIA 显卡驱动详细步骤(ERROR: The Nouveau kernel driver is currently in use by your system)
23046