redis里能不能针对set数据的每个member设置过期时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis里能不能针对set数据的每个member设置过期时间相关的知识,希望对你有一定的参考价值。
参考技术A 不能。因为过期时间是针对key来设置的。
其他变相实现:redis里有个有序set,你可以把时间作为排序的分值,自己写程序定时按时间删除zset中的member。
或者按时间定义多个key,再对key设置过期时间。
set操作
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
1.向集合添加一个或多个成员SADD key member1 [member2]
2.获取集合的成员数 SCARD key
3.判断 member 元素是否是集合 key 的成员SISMEMBER key member
4.返回集合中的所有成员SMEMBERS key
5.移除集合中一个或多个成员SREM key member1 [member2]
6.移除并返回集合中的一个随机元素SPOP key count
7.返回给定所有集合的差集SDIFF key1 [key2]
8.返回所有给定集合的并集SUNION key1 [key2]
9.返回给定所有集合的交集SINTER key1 [key2]
set代码操作:
package com.study.util; import java.util.Set; import redis.clients.jedis.Jedis; public class RedisSet { public static void main(String[] args) { Jedis jedis = RedisUtil.getJedis(); //想集合set中添加a,b,c,d,e,f jedis.sadd("set", "a","b","c","d","e","f"); //获取set集合元素 Set<String> valueList = jedis.smembers("set"); System.out.print("set集合元素:"); for (String value : valueList) { System.out.print(value); } System.out.println(); //获取set集合的成员数量 long length = jedis.scard("set"); System.out.println("set集合的成员数量:"+length); //判断字符串b和g是否存在集合set中 boolean bflag = jedis.sismember("set", "b"); System.out.println("b是否存在集合set中:" + bflag); boolean gflag = jedis.sismember("set", "g"); System.out.println("g是否存在集合set中:" + gflag); //移除集合set中的元素a b jedis.srem("set", "a","b"); valueList = jedis.smembers("set"); System.out.print("移除后set集合元素:"); for (String value : valueList) { System.out.print(value); } System.out.println(); //随机移除集合set的一个元素并返回 String popValue = jedis.spop("set"); System.out.println("随机移除的元素为:" + popValue); valueList = jedis.smembers("set"); System.out.print("随机移除后set集合元素:"); for (String value : valueList) { System.out.print(value); } System.out.println(); //向集合set1中添加d i j k jedis.sadd("set1", "d","i","j","k"); //获取set集合与set1集合的差集 Set<String> diffSet =jedis.sdiff("set","set1"); System.out.println("set集合与set1集合的差集:"); for (String value : diffSet) { System.out.print(value); } System.out.println(); //获取set集合与set1集合的并集 Set<String> unionSet =jedis.sunion("set","set1"); System.out.println("set集合与set1集合的并集:"); for (String value : unionSet) { System.out.print(value); } System.out.println(); //获取set集合与set1集合的交集 Set<String> interSet =jedis.sinter("set","set1"); System.out.println("set集合与set1集合的交集:"); for (String value : interSet) { System.out.print(value); } System.out.println(); jedis.close(); } }
代码git地址:https://gitee.com/sjcq/redis.git
以上是关于redis里能不能针对set数据的每个member设置过期时间的主要内容,如果未能解决你的问题,请参考以下文章