当前使用redis做缓存,但是内存满了之后 lru 模式下就会丢掉旧数据,有时候会直接丢掉session导致所有人无法登陆无法操作,只能看。
有无可能设置部分数据绝不丢弃呢?
有无可能设置部分数据绝不丢弃呢?
|
fuxkcsdnApr 20, 2015
1
不丢弃的部分数据设置一个无关紧要的字段,定期更新此字段,猜测的没实际操作过
|
|
ryd994Apr 21, 2015 via Android
2
那就上持久化啊
|
|
4
找到一个临时解决办法,给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内存。目前不清楚死掉的空间是为什么。。。。。 |
|
lincanbinApr 21, 2015 via Android
5
开个表存着,每次用之前判断该在不在,不在就去读表在写入缓存。
我自己都是这样做的,毕竟缓存属于不可靠储存,要持久化肯定要靠硬盘 |
|
maddemonApr 21, 2015
6
session专门用一个redis进程
|
|
axbApr 21, 2015 via iPhone
8
开两个redis,一个做缓存,一个做存储
|
|
stiekelApr 21, 2015
9
对于不能丢的数据,比如像你的会话,不能单纯依靠redis的,建议策略如下:
1、生成会话时,存redis的同时,也存到存储中,比如MongoDB 2、当在redis找不到会话时,去MongoDB查询,如果查到了,回写到redis 当然,具体策略还可以更优,比如设置一个存放会话id列表的地方(可以是缓存中),先在缓存中查会话,没有则到会话id列表中查,如果查到了则去存储,没有查到则直接证明会话不存在。 |
|
fly2neverApr 21, 2015
10
redis其实不适合做session管理
|
|
xiaoheshangApr 21, 2015
11
可以用memcache做session管理
|
|
duzhe0Apr 21, 2015
12
开两个redis实例。
|
|
hydraztApr 21, 2015
13
顶 两个实例
|
|
solaroMay 8, 2015
15
做持久化。持久化俗名就是把原本放在缓存里的数据全部写到硬盘里。重启之后数据还可以再读回缓存。
有两种,一种叫aof,一种叫rdb。。 |