永发信息网

往redis存数据的时候不设置过期时间 是不是这条数据就永久

答案:2  悬赏:70  手机版
解决时间 2021-03-22 20:13
  • 提问者网友:川水往事
  • 2021-03-22 11:31
往redis存数据的时候不设置过期时间 是不是这条数据就永久
最佳答案
  • 五星知识达人网友:山河有幸埋战骨
  • 2020-12-09 16:32
不会过期。 但是这样说有点绝对。一般情况是这样,当你配置中开启了超出最大内存限制就写磁盘的话,那么这些没有设置过期时间的key可能会被写到磁盘上。 假如没设置。那么REDIS将使用LRU机制,将内存中的老数据删除,并写入新数据。
可以用sorted set,把要过期的member和key的信息放在sorted set的member里,把过期时间放在score中。跑个任务用zrangebyscore遍历就行了。用sorted set好处是只需要遍历过期的member,不用扫描整个过期member集合。
全部回答
  • 1楼网友:逃夭
  • 2019-10-18 03:32
最近学习下redis,作为一个高性能的k/v数据库,如果数据不用swap的话,redis的性能是无以伦比的。最近在做一个系统附件的缓存,试着把附件放到redis试试,写了个保存文件的方法。public class testredis{ jedis redis = new jedis("localhost"); //序列化方法 public byte[] object2bytes(object value) { if (value == null) return null; bytearrayoutputstream arrayoutputstream = new bytearrayoutputstream(); objectoutputstream outputstream; try { outputstream = new objectoutputstream(arrayoutputstream); outputstream.writeobject(value); } catch (ioexception e) { e.printstacktrace(); } finally { try { arrayoutputstream.close(); } catch (ioexception e) { e.printstacktrace(); } } return arrayoutputstream.tobytearray(); } //反序列化方法 public object byte2object(byte[] bytes) { if (bytes == null || bytes.length == 0) return null; try { objectinputstream inputstream; inputstream = new objectinputstream(new bytearrayinputstream(bytes)); object obj = inputstream.readobject(); return obj; } catch (ioexception e) { e.printstacktrace(); } catch (classnotfoundexception e) { e.printstacktrace(); } return null; } //保存文件方法 public void setfile(string key,string path){ file fr = new file(path); redis.set(key.getbytes(), object2bytes(fr)); } //读取文件对象方法 public file getfile(string key){ jedis redis = new jedis("localhost"); file file = (file)byte2object(redis.get(key.getbytes())); return file; } public void testfile(string key,string path)throws exception{ setfile("test", "d:\\test.txt"); file file = getfile("test"); bufferedreader br = new bufferedreader(new filereader(file)); string record = null; while ((record = br.readline()) != null) { system.out.println("record:"+record); } } public static void main(string[] args) throws exception{ testredisos = new testredis(); os.testfile("test", "d:\\test.txt"); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯