redis部分操作

redis key 过期时间:

EXPIRE key 100

设置了过期时间,100秒后,key将自动被删除。

过期时间删除的方法有三种:

1、删除这个key,使用del command

2、用set or getset 命令会将key的expiration清空,事实上set和getset命令是替换了key对应的value,所以key的过期时间也就不复存在。所以,需要注意的是:incr,LPUSH,HSET命令是不会改变key的过期时间的。原来是多久,这三条命令执行完之后还是多久。

3、使用persist命令清除key的过期时间。

rename命令是将keyA变为keyB,无论keyB是否已经存在,keyA的过期时间都会被keyB继承过去。

刷新过期时间:

多次调用expire key 100 可以刷新key的过期时间。

返回值:

返回值:1代表过期时间被设置。

返回值:0代表key不存在或者timeout不能被设置。

redis如何清除过期keys:

redis有两种方式清除过期keys:主动方式,和被动方式。

1、主动方式:当client访问某一个key,redis会check key是否过期,如果已经过期,则被删除。

2、被动方式:不是所有的key都能被client访问。redis有一套默认的机制,redis每秒会进行10次以下动作:

a、随机从keys中挑选100个key,这100key是关联了过期时间的key。

b、删除已经过期的key。

c、如果删除的key超过25个,那么重复步骤a。

这是一个不是很严格的算法。不过可以基本保证过期的keys小于总数的25%。其实这是一种近似算法。随机选数,检查并删除。随机选key就保证了大致概率,结果只能是近似的。

这意味着:在任意时间点,那些占用内存并已经过期的keys的数量最多等于每秒写入数量的四分之一。

key 过期如何解决主从节点同步以及AOF文件:

为了保证结果一致性,当key过期时,从节点会等待主节点的删除命令,从节点不会自己删除已经过期的key,主节点会进行集权控制,保证一致性。不过假如意外掉电,或者节点当机不知道会是什么情况。会不会导致主节点key已经删除,而从节点没有删除的情况。官方网站也没有一个明确的解释。

expire的持久化:

redis key的过期时间很有意思:以unix的时间戳存储。也就是说,在redis server不活动的情况下,key的过期时间仍然是有效的。这样会带来什么情况呢,比如数据库文件RDB从一台2013年11月27日00:00:00的服务器上移动到2013年11月30日00:00:00的服务器上,重启redis server,那么RDB中所有过期时间<=3天的keys都会被清除。

假如不想所有的keys都被清除的话,可以将服务器时间设置为过去的时间。

心得:

1、hmset、rpush、incr不会清除key的timeout。

2、hmset的fileds的key不能设置timeout。

3、我们只能通过ttl来查看 key的过期时间。

4、过期时间精准度不是特别的准。比如说,部分keys永远不会被主动access,在被动清除模式中也不一定每次都能被random选中,那么就有可能清除时间会被延后。可能是几毫秒。如果对于过期时间要求非常精准的情况下,需要慎重。

5、key被清除的时候目前是没有notification的。你也就无法做相应的事件处理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis是一个基于内存的数据存储系统,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。下面介绍一些Redis的常用数据操作: 1. 字符串操作 - SET key value:设置key对应的value。 - GET key:获取key对应的value。 - DEL key:删除key对应的value。 2. 哈希操作 - HSET key field value:为key中的哈希表设置field字段的值为value。 - HGET key field:获取key中哈希表中field字段的值。 - HDEL key field:删除哈希表key中的field字段。 3. 列表操作 - LPUSH key value1 [value2]:将一个或多个value插入到列表key的左侧。 - RPUSH key value1 [value2]:将一个或多个value插入到列表key的右侧。 - LPOP key:移除并返回列表key的左侧第一个元素。 - RPOP key:移除并返回列表key的右侧第一个元素。 4. 集合操作 - SADD key member1 [member2]:向集合key中添加一个或多个member。 - SMEMBERS key:返回集合key中所有的成员。 - SREM key member1 [member2]:从集合key中删除一个或多个member。 5. 有序集合操作 - ZADD key score1 member1 [score2 member2]:向有序集合key中添加一个或多个member,每个member都有一个对应的score。 - ZRANGE key start stop [WITHSCORES]:返回有序集合key中排名在start和stop之间的所有member,如果指定了WITHSCORES,则同时返回成员的score。 以上只是Redis数据操作中的一部分,还有很多其他的操作,可以根据具体需求去查阅Redis官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值