与Redis存储会话有多安全?

我目前使用db(mysql)来存储我的会话。 它工作的很好,但有点慢。

我被要求使用Redis,但是我想知道这是不是一个好主意,因为我听说Redis延迟了写操作,所以我有点害怕,因为会话需要真实的时间。

你遇到过这样的问题吗?

Redis非常适合存储会话。 所有操作都在内存中执行,因此读取和写入将会很快。

第二个方面是会话状态的持久性。 Redis为您将会话状态持久保存到硬盘提供了很大的灵活性。 你可以通过http://redis.io/topics/persistence来了解更多,但在高层次,这里是你的select

  1. 如果您不能丢失任何会话, appendfsync always在您的configuration文件中appendfsync always设置appendfsync always 。 借此,Redis保证任何写操作都被保存到磁盘。 缺点是写操作会变慢。
  2. 如果您可以丢失大约1 appendfsync everysec的数据,请使用appendfsync everysec 。 这将在合理的数据保证下给予很好的performance

基本上有两种主要types可用:asynchronoussnapsnots和fsync() 。 他们分别被称为RDB和AOF。 更多关于官方页面的持久化模式 。

守护进程的信号处理当它收到一个SIGTERM实例时会同步到磁盘,所以在重新启动之后数据仍然在那里。 我认为守护进程或操作系统必须崩溃才能看到完整性损坏,即使使用默认设置(RDB快照)。

AOF设置使用“追加文件”来logging服务器接收到的命令,并从保存的文件中重新启动冷启动时的数据库。 默认的磁盘同步策略是每秒刷新一次(IIRC),但可以设置为locking和写入每个命令。

同时使用快照和增量日志似乎可以提供一个长期的不用介意,如果我错过了几秒钟的数据方法与更安全,但昂贵的增量日志。 Redis支持开箱即用,所以复制也可以完成。

我正在使用默认的RDB设置,并将快照保存到远程FTP。 我还没有看到导致数据丢失的失败。 急性的硬件故障或停电很可能,但我主持的VPS。 发生这种事情的机会小巧:)