redis 如何设置部分数据永不丢弃? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
baskice
V2EX    Redis

redis 如何设置部分数据永不丢弃?

  baskice 2015-04-20 23:23:57 +08:00 6290 次点击
这是一个创建于 3877 天前的主题,其中的信息可能已经有所发展或是发生改变。
当前使用redis做缓存,但是内存满了之后 lru 模式下就会丢掉旧数据,有时候会直接丢掉session导致所有人无法登陆无法操作,只能看。

有无可能设置部分数据绝不丢弃呢?
15 条回复    2015-05-08 22:05:53 +08:00
fuxkcsdn
    1
fuxkcsdn  
   2015-04-20 23:30:42 +08:00
不丢弃的部分数据设置一个无关紧要的字段,定期更新此字段,猜测的没实际操作过
ryd994
    2
ryd994  
   2015-04-21 00:02:07 +08:00 via Android
那就上持久化啊
baskice
    3
baskice  
OP
   2015-04-21 02:17:52 +08:00
@ryd994 持久化开了内存上限一到一样会扔掉啊
baskice
    4
baskice  
OP
   2015-04-21 03:06:20 +08:00
找到一个临时解决办法,给session不设置过期时间,然后redis设置成

volatile-lru: evict keys trying to remove the less recently used (LRU) keys first, but only among keys that have an expire set, in order to make space for the new data added.

给所有其他数据都设置过期时间。不过测试发现这个模式下死掉的内存会快速增加,以我们这边生产环境看大概2天能耗光8G内存。目前不清楚死掉的空间是为什么。。。。。
lincanbin
    5
lincanbin  
   2015-04-21 07:47:37 +08:00 via Android
开个表存着,每次用之前判断该在不在,不在就去读表在写入缓存。
我自己都是这样做的,毕竟缓存属于不可靠储存,要持久化肯定要靠硬盘
maddemon
    6
maddemon  
   2015-04-21 08:10:29 +08:00
session专门用一个redis进程
no13bus
  &nbp; 7
no13bus  
   2015-04-21 08:51:26 +08:00
@baskice 是持久化本地硬盘吧。影响内存吗?
axb
    8
axb  
   2015-04-21 08:58:12 +08:00 via iPhone
开两个redis,一个做缓存,一个做存储
stiekel
    9
stiekel  
   2015-04-21 09:32:40 +08:00
对于不能丢的数据,比如像你的会话,不能单纯依靠redis的,建议策略如下:
1、生成会话时,存redis的同时,也存到存储中,比如MongoDB
2、当在redis找不到会话时,去MongoDB查询,如果查到了,回写到redis

当然,具体策略还可以更优,比如设置一个存放会话id列表的地方(可以是缓存中),先在缓存中查会话,没有则到会话id列表中查,如果查到了则去存储,没有查到则直接证明会话不存在。
fly2never
    10
fly2never  
   2015-04-21 09:58:16 +08:00
redis其实不适合做session管理
xiaoheshang
    11
xiaoheshang  
   2015-04-21 10:47:46 +08:00
可以用memcache做session管理
duzhe0
    12
duzhe0  
   2015-04-21 12:44:32 +08:00
开两个redis实例。
hydrazt
    13
hydrazt  
   2015-04-21 18:14:31 +08:00
顶 两个实例
baskice
    14
baskice  
OP
   2015-04-21 22:27:05 +08:00
@fly2never 有更好的方案吗?
solaro
    15
solaro  
   2015-05-08 22:05:53 +08:00
做持久化。持久化俗名就是把原本放在缓存里的数据全部写到硬盘里。重启之后数据还可以再读回缓存。
有两种,一种叫aof,一种叫rdb。。
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     812 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 26ms UTC 20:11 PVG 04:11 LAX 12:11 JFK 15:11
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86