关于redis.opsForHash结构时间不过期,如何设置过期时间
首先看opsForHash中的put方法
Redis.opsForHash.put(key,hashkey,value);
我们平时设置过期时间用的expire方法设置的是hashkey的过期时间,为什么要用redis,因为数据读取快,试想一下如果就只是单纯的几百条数据,几条查询的话就不会用到redis了,要做大数量的数据存储读取,每操作一条hashkey就会刷新key的过期时间,所以key相当于不会过期。
下面来说下我是怎么解决的
补充:hash不可以设置hashkey的过期时间,会被覆盖,装redis的时候使用key value ,value是map(key,map)格式即可。
Redis.opsForValue.set方法就可以完美替代opsForHash.put了。过期时间设置opsForHash.set(key,value,时间,TimeUnit.SECONDS)就可以了,取的方法跟不变
废话不多说上代码看效果:
public void test(String str) {
String key = “Redis16_test”;
String hashkey = “” + str;
Map<String,String> map = new HashMap<String,String>();
map.put(“nihao”, “nihao”);
map.put(“wohao”, “wohao”);
map.put(“dajiahao”, “dajiahao”);
map.put(“caishi”, “caishi”);
map.put(“zhengdehao”, “zhengdehao”);
map.put(“formwozuiyangqi”, “formwozuiyangqi”);
System.out.println(map);
redis16.opsForHash().put(key, hashkey, map);
redis16.expire(key, 100000, TimeUnit.SECONDS);
}
public void testNew(String str) {
String key = “Redis16_test”;
Map<String,String> map = new HashMap<String,String>();
map.put(“nihao”, “nihao”);
map.put(“wohao”, “wohao”);
map.put(“dajiahao”, “dajiahao”);
map.put(“caishi”, “caishi”);
map.put(“zhengdehao”, “zhengdehao”);
map.put(“formwozuiyangqi”, “formwozuiyangqi”);
redis16.opsForValue().set(key, map.toString());
redis16.opsForValue().set(key,map.toString(),10l,TimeUnit.SECONDS);
}
public static void main(String[] args) {
Test test = new Test();
test.test(“wozuiyangqi”);
test.testNew(“wozuiyangqi”);
}
运行结果相同

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐