关于 redis.Hash 如何设置过期时间, 时间不过期
关于 redis.opsForHash 结构时间不过期,如何设置过期时间
首先看 opsForHash 中的 put 方法
Redis.opsForHash.put(key,hashkey,value);
我们平时设置过期时间用的 expire 方法设置的是 hashkey 的过期时间,为什么要用 redis,因为数据读取快,试想一下如果就只是单纯的几百条数据,几条查询的话就不会用到 redis 了,要做大数量的数据存储读取,每操作一条 hashkey 就会刷新 key 的过期时间,所以 key 相当于不会过期。
下面来说下我是怎么解决的
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”);
}
运行结果相同