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直接获取返回值
具体的命令说明:(待添加)