redis的pythonAPI的使用

一,环境说明
 操作系统:red hat 6.3
 redis 版本 : 2.6.3
 redis的python API:2.7.2
 在yum版本中为2.4.20,旧版的python不支持很多新的特性。所以安装最新的版本。
二,安装
 #tar -zvxf redis-2.6.3.tar.gz
 #cd redis-2.6.3
 #make
 #make test
#make install
 #redis-server  PATH/redis.conf 
 [root@c03 redis-2.6.3]# redis-server /root/Downloads/redis-2.6.3/redis.conf
[14074] 21 Mar 10:12:29.136 * Max number of open files set to 10032
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 2.6.3 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 14074
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

[14074] 21 Mar 10:12:29.170 # Server started, Redis version 2.6.3
[14074] 21 Mar 10:12:29.170 # 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.
[14074] 21 Mar 10:12:29.170 * The server is now ready to accept connections on port 6379

OK,现在可以使用redis-cli登录了
 #redis-cli -h 127.0.0.1
 [root@c03 ~]# redis-cli -h 127.0.0.1
redis 127.0.0.1:6379> help
redis-cli 2.6.3
Type: "help @" to get a list of commands in
      "help " for help on
      "help " to get a list of possible help topics
      "quit" to exit
redis 127.0.0.1:6379> help lpush

  LPUSH key value [value ...]
  summary: Prepend one or multiple values to a list
  since: 1.0.0
  group: list

redis 127.0.0.1:6379> quit
安装pythonApi
#unzip redis-py-mster.zip
#cd redis-py-master
 #python setup.py install
 #python
>import redis
>>> dir(redis)
['AuthenticationError', 'Connection', 'ConnectionError', 'ConnectionPool', 'DataError', 'InvalidResponse', 'PubSubError', 'Redis', 'RedisError', 'ResponseError', 'StrictRedis', 'UnixDomainSocketConnection', 'VERSION', 'WatchError', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_compat', 'client', 'connection', 'exceptions', 'from_url', 'utils']
>>> redis.__version__
'2.7.2'
建议:安装hiredis插件,使用Hiredis可以提供一个10倍的速度改进从Redis服务器解析响应。最显著的性能提高是当检索许多数据片段,比如从LRANGE或SMEMBERS操作。
#yum install hiredis

三,redis模块的使用
1,redis的连接
 redis的pythonAPI,提供了3中方式来进行连接redis
 a,使用StrictRedis类连接
 redata = redis.StrictRedis(host='192.168.0.111',port=6379,db=0)
redata.set("aaa","bbbb")
redata.get("aaa")
b,使用redis类连接
redate = redis.redis( host='192.168.0.111',port=6379,db=0 )
redata.set("aaa","bbbb")
redata.get("aaa")
c,使用连接池连接
redispool = redis.ConnectionPool(host="127.0.0.1",port=6379,db=0)
redata = redis.Redis(connection_pool=redispool)
2,redis的使用
python的使用方式基本上和官网上提供的命令行方式一样,最新版本基本都能支持全部命令
>>>redata.get("v")
>>>redata.set("a",2)
>>>redata.lrange("list1",0,-1)
具体的命令可以使用help(redis.StrictRedis)查询。

注意,python提供一种pipeline的方式来进行操作。将多条命令作为一个请求发给服务端。
redpipe = redata.pipeline() 
        
redata.rpush("date",datadate)
redata.set("aaa","bbbb")
redpipe.execute()
3,对脚本的支持
redis的python支持一些命令和脚本语言。这点和mongodb很像,mongodb中的map和reduce的实现,是采用javascript的脚本语言的方式来实现的。
例如,调用那个lua的例子
>>>import redis
>>> r=redis.StrictRedis()
>>> lua='''
... local a = 0
... local b = 2
... return a+b
... '''
>>> aaa = r.register_script(lua)
>>> aaa()
2L
可以将一些复杂的计算交给lua处理,使用python直接获取返回值

具体的命令说明:(待添加)