1
fuxkcsdn 2015-04-20 23:30:42 +08:00
不丢弃的部分数据设置一个无关紧要的字段,定期更新此字段,猜测的没实际操作过
|
2
ryd994 2015-04-21 00:02:07 +08:00 via Android
那就上持久化啊
|
4
baskice OP 找到一个临时解决办法,给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内存。目前不清楚死掉的空间是为什么。。。。。 |
5
lincanbin 2015-04-21 07:47:37 +08:00 via Android
开个表存着,每次用之前判断该在不在,不在就去读表在写入缓存。
我自己都是这样做的,毕竟缓存属于不可靠储存,要持久化肯定要靠硬盘 |
6
maddemon 2015-04-21 08:10:29 +08:00
session专门用一个redis进程
|
8
axb 2015-04-21 08:58:12 +08:00 via iPhone
开两个redis,一个做缓存,一个做存储
|
9
stiekel 2015-04-21 09:32:40 +08:00
对于不能丢的数据,比如像你的会话,不能单纯依靠redis的,建议策略如下:
1、生成会话时,存redis的同时,也存到存储中,比如MongoDB 2、当在redis找不到会话时,去MongoDB查询,如果查到了,回写到redis 当然,具体策略还可以更优,比如设置一个存放会话id列表的地方(可以是缓存中),先在缓存中查会话,没有则到会话id列表中查,如果查到了则去存储,没有查到则直接证明会话不存在。 |
10
fly2never 2015-04-21 09:58:16 +08:00
redis其实不适合做session管理
|
11
xiaoheshang 2015-04-21 10:47:46 +08:00
可以用memcache做session管理
|
12
duzhe0 2015-04-21 12:44:32 +08:00
开两个redis实例。
|
13
hydrazt 2015-04-21 18:14:31 +08:00
顶 两个实例
|
15
solaro 2015-05-08 22:05:53 +08:00
做持久化。持久化俗名就是把原本放在缓存里的数据全部写到硬盘里。重启之后数据还可以再读回缓存。
有两种,一种叫aof,一种叫rdb。。 |