redis老版本中的expire问题及新版本的安装测试

今天发现redis数据库中一个值总是1,但是程序中确实对这个值incr了N多次

每次incr了之后,都设置了一个expire时间,试着将expire这句注释掉之后,这个值就一直在增长

难道是expire不对吗?查找了redis的官方文档,没错啊,于是自己测试了一下


debian:~$ redis-cli
redis> incr dd
(integer) 1
redis> incr dd
(integer) 2
redis> incr dd
(integer) 3
redis> incrby dd 50
(integer) 53
redis> expire dd 600
(integer) 1
redis> get dd
53
redis> incr dd
(integer) 1

原来在expire之后,再incr就会重新从1开始,怪不得我那个值老是的呢,这明显是一个bug嘛。

先用dpkg看了一下redis的版本

debian:~$ dpkg -l redis-server
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                         Version                      Description
+++-============================-============================-========================================================================
ii  redis-server                 2:1.2.6-1                    Persistent key-value database with network interface

原来是1.2.6的,现在最新的redis都2.4.4了啊。debian上的软件版本够老的!我的debian可是最新的debian 6啊。

于是自己下载redis代码,编译之后,用新版本的测试了一下

1. 下载解压

wget http://redis.googlecode.com/files/redis-2.4.4.tar.gz
tar -zxf redis-2.4.4.tar.gz

2. 编译

cd redis-2.4.4
make

3. 运行

先把redis.conf改一下,把daemonize改为yes,端口改为6378,然后启动redis

./src/redis-server redis.conf

4. 测试,

还是和老版本中的一样,但是结果是正确的。expire之后再incr,不会从1开始了

debian:~/software/redis-2.4.4$ redis-cli -p 6378
redis> incr dd
(integer) 1
redis> incr dd
(integer) 2
redis> incr dd
(integer) 3
redis> incrby dd 50
(integer) 53
redis> expire dd 600
(integer) 1
redis> get dd
53
redis> incr dd
(integer) 54


你可能感兴趣的:(redis老版本中的expire问题及新版本的安装测试)