Redis2.6 リリースされたメモ

起動メッセージが変わりました

なんか絵があります
2.6といいつつ Redis 2.5.7と出ますw
persistenceで起動したい場合は「--appendonly yes」と指定すると「appendonly.aof」というファイルに追記式に保存される

mucc@mucc-VirtualBox:~/work/redis-2.6.0-rc1$ ./src/redis-server  --appendonly yes
[4332] 30 Apr 00:56:22.844 # Unable to set the max number of files limit to 10032 (Operation not permitted), setting the max clients configuration to 3984.
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 2.5.7 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 4332
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[4332] 30 Apr 00:56:22.849 # Server started, Redis version 2.5.7
[4332] 30 Apr 00:56:22.850 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

検証

Luaで簡単なサンプルデータを投入
UserIDしか入れてないけど、スペック上げても今のところ1台辺り1千万レコードが限界かな

eval "for i = 1, 100000    do redis.call('hset','user',i,'member_'..i) end" 0     1sec
eval "for i = 1, 1000000   do redis.call('hset','user',i,'member_'..i) end" 0    10sec     111,276Kbyte(約100byte)
eval "for i = 1, 10000000  do redis.call('hset','user',i,'member_'..i) end" 0   100sec   1,104,840Kbyte(約100byte)
eval "for i = 1, 100000000 do redis.call('hset','user',i,'member_'..i) end" 0   ※未検証

eval "for i = 1, 100000    do redis.call('SADD', 'user:1:follows', i) end" 0    1.2sec
eval "for i = 1, 1000000   do redis.call('SADD', 'user:1:follows', i) end" 0     10sec      110,540Kbyte(約100byte)
eval "for i = 1, 10000000  do redis.call('SADD', 'user:1:follows', i) end" 0    130sec    1,100,556Kbyte(約100byte)

運用の懸念点

AOFファイルをメモリ展開するため再起動後結構時間がかかる(1-5分程度)
AOFファイルを展開するのに1台のサーバーフルでメモリを使うとレプリケーションと同期するためのメモリが確保できなくなってしまう