python如何连接redis

Python (168) 2023-06-01 06:35:44

在Linux系统下Python连接Redis的基本配置方法具体操作步骤:

系统环境:

OS:Oracle Linux Enterprise 5.6

Redis:redis-2.6.8

Python:Python-2.7.3

redis的python包版本:redis-2.7.2.tar

前提条件:

(1)确保Redis已成功安装并且正确配置。

主从配置文档:

//www.jb51.net/article/147397.htm

(2)确保Python环境已成功配置。

https://www.jb51.net/article/109765.htm

配置python连接redis:

1、安装Redis的Python包

使用easy-install安装,关于easy-install的配置,参考以上Python环境的搭建。

[root@njdywbin]#easy_install2.7.3redis
Searchingforredis
Readinghttp://pypi.python.org/simple/redis/
Readinghttp://github.com/andymccurdy/redis-py
Bestmatch:redis2.7.2
Downloadinghttp://pypi.python.org/packages/source/r/redis/redis-2.7.2.tar.gz#md5=17ac60dcf13eb33f82cc25974ab17157
Processingredis-2.7.2.tar.gz
Runningredis-2.7.2/setup.py-qbdist_egg--dist-dir/tmp/easy_install-8FAlft/redis-2.7.2/egg-dist-tmp-JzQViJ
zip_safeflagnotset;analyzingarchivecontents...
Addingredis2.7.2toeasy-install.pthfile

Installed/usr/local/python2.7.3/lib/python2.7/site-packages/redis-2.7.2-py2.7.egg
Processingdependenciesforredis
Finishedprocessingdependenciesforredis

安装Parser包(可选)

说明:Parser可以控制如何解析redis响应的内容。redis-py包含两个Parser类,PythonParser和HiredisParser。默认,如果已经安装了hiredis模块,redis-py会使用HiredisParser,否则会使用PythonParser。

相关推荐:《Python教程》

HiredisParser是C编写的,由redis核心团队维护,性能要比PythonParser提高10倍以上,所以推荐使用。安装方法,使用easy_install:

[root@njdyw~]#easy_install2.7.3hiredis
Searchingforhiredis
Readinghttp://pypi.python.org/simple/hiredis/
Readinghttps://github.com/pietern/hiredis-py
Bestmatch:hiredis0.1.1
Downloadinghttp://pypi.python.org/packages/source/h/hiredis/hiredis-0.1.1.tar.gz#md5=92128474f6fb027cfb8587fce724ea8e
Processinghiredis-0.1.1.tar.gz
Runninghiredis-0.1.1/setup.py-qbdist_egg--dist-dir/tmp/easy_install-ZanSCB/hiredis-0.1.1/egg-dist-tmp-XCZBQ0
zip_safeflagnotset;analyzingarchivecontents...
Addinghiredis0.1.1toeasy-install.pthfile

Installed/usr/local/python2.7.3/lib/python2.7/site-packages/hiredis-0.1.1-py2.7-linux-x86_64.egg
Processingdependenciesforhiredis
Finishedprocessingdependenciesforhiredis

2、检查安装是否成功

easy-install安装的扩展包默认在python的site-packages目录下

[root@njdyw~]#whereispython2.7.3
python2.7:/bin/python2.7.3/usr/local/python2.7.3
[root@njdyw~]#cd/usr/local/python2.7.3/lib/python2.7/site-packages/
[root@njdywsite-packages]#ll

总计 408

-rw-r--r--1rootroot23903-2110:45easy-install.pth
-rw-r--r--1rootroot11903-2110:07README
-rw-r--r--1rootroot6040103-2110:45redis-2.7.2-py2.7.egg
-rw-r--r--1rootroot33212503-2110:12setuptools-0.6c11-py2.7.egg
-rw-r--r--1rootroot3003-2110:12setuptools.pth

可以看到redis-2.7.2-py2.7.egg包已经成功安装。

3、测试连接

[root@njdywsite-packages]#python2.7.3
Python2.7.3(default,Mar212013,10:06:48)
[GCC4.1.220080704(RedHat4.1.2-50)]onlinux2
Type"help","copyright","credits"or"license"formoreinformation.
>>>importredis
>>>redisClient=redis.StrictRedis(host='127.0.0.1',port=6379,db=0)
>>>redisClient.set('test_redis','HelloPython')
True
>>>value=redisClient.get('test_redis')
>>>printvalue
HelloPython
>>>redisClient.delete('test_redis')
True
>>>value=redisClient.get('test_redis')
>>>printvalue
None


>>>dir(redis)
['AuthenticationError','Connection','ConnectionError','ConnectionPool','DataError','InvalidResponse',
'PubSubError','Redis','RedisError','ResponseError','StrictRedis','UnixDomainSocketConnection','VERSION',
'WatchError','__all__','__builtins__','__doc__','__file__','__loader__','__name__','__package__','__path__',
'__version__','_compat','client','connection','exceptions','from_url','utils']
>>>redisClient=redis.StrictRedis(host='127.0.0.1',port=6379,db=0)
>>>dir(redisClient)
['RESPONSE_CALLBACKS','__class__','__contains__','__delattr__','__delitem__','__dict__','__doc__','__format__',
'__getattribute__','__getitem__','__hash__','__init__','__module__','__new__','__reduce__','__reduce_ex__',
'__repr__','__setattr__','__setitem__','__sizeof__','__str__','__subclasshook__','__weakref__','_zaggregate',
'append','bgrewriteaof','bgsave','bitcount','bitop','blpop','brpop','brpoplpush','client_kill','client_list',
'config_get','config_set','connection_pool','dbsize','debug_object','decr','delete','echo','eval','evalsha',
'execute_command','exists','expire','expireat','flushall','flushdb','from_url','get','getbit','getrange',
'getset','hdel','hexists','hget','hgetall','hincrby','hincrbyfloat','hkeys','hlen','hmget','hmset','hset',
'hsetnx','hvals','incr','incrbyfloat','info','keys','lastsave','lindex','linsert','llen','lock','lpop',
'lpush','lpushx','lrange','lrem','lset','ltrim','mget','move','mset','msetnx','object','parse_response',
'persist','pexpire','pexpireat','ping','pipeline','pttl','publish','pubsub','randomkey','register_script',
'rename','renamenx','response_callbacks','rpop','rpoplpush','rpush','rpushx','sadd','save','scard',
'script_exists','script_flush','script_kill','script_load','sdiff','sdiffstore','set','set_response_callback',
'setbit','setex','setnx','setrange','shutdown','sinter','sinterstore','sismember','slaveof','smembers',
'smove','sort','spop','srandmember','srem','strlen','substr','sunion','sunionstore','time','transaction',
'ttl','type','unwatch','watch','zadd','zcard','zcount','zincrby','zinterstore','zrange','zrangebyscore',
'zrank','zrem','zremrangebyrank','zremrangebyscore','zrevrange','zrevrangebyscore','zrevrank','zscore',
'zunionstore']
>>>

4、测试实例:

(1)把文本数据导入到redis

导入的数据格式

[root@njdyw~]#moredata.txt
wolys#wolysopen111#wolys@21cn.com
coralshanshan#601601601#zss1984@126.com
pengfeihuchao#woaidami#294522652@qq.com
simulategirl#@#$9608125#simulateboy@163.com
daisypp#12345678#zhoushigang_123@163.com
sirenxing424#tfiloveyou#sirenxing424@126.com
raininglxy#1901061139#lixinyu23@qq.com
leochenlei#leichenlei#chenlei1201@gmail.com
z370433835#lkp145566#370433835@qq.com

创建命令脚本

[root@njdyw~]#catimp_red.py
importredis
importre
pool=redis.ConnectionPool(host='127.0.0.1',port=6379)
r=redis.Redis(connection_pool=pool)
pipe=r.pipeline()
p=re.compile(r'(.*)\s#\s(.*)\s#\s(.*)');
pipe=r.pipeline()
f=open("data.txt")
matchs=p.findall(f.read())
foruserinmatchs:
key='users_%s'%user[0].strip()
pipe.hset(key,'pwd',user[1].strip()).hset(key,'email',user[2].strip())
pipe.execute()
f.close()

注意:要严格控制python脚本中的空格

执行脚本

[root@njdyw~]#python2.7.3imp_red.py

查看导入数据

[root@njdyw~]#redis-cli
redis127.0.0.1:6379>keys*
1)"users_xiaochuan2018"
2)"users_coralshanshan"
3)"users_xiazai200901"
4)"users_daisypp"
5)"users_boiny"
6)"users_raininglxy"
7)"users_fennal"
8)"users_abc654468252"
9)"users_babylovebooks"
10)"users_xl200811"
11)"users_baby19881018"
12)"users_darksoul0929"
13)"users_pengcfwxh"
14)"users_alex126126"
15)"users_jiongjiongmao"
16)"users_sirenxing424"
17)"users_mengjie007"
18)"users_cxx0409"
19)"users_candly8509"
20)"users_licaijun007"
21)"users_ai3Min2"
22)"users_bokil"
23)"users_z370433835"
24)"users_yiling1007"
25)"users_simulategirl"
26)"users_fxh852"
27)"users_baoautumn"
28)"users_huangdaqiao"
29)"users_q1718334567"
30)"users_xldq_l"
31)"users_beibeilong012"
32)"users_hudaoyin"
33)"users_yoyomika"
34)"users_jacksbalu"
35)"users_wolys"
36)"users_kangte1"
37)"users_demonhaodh"
38)"users_ysdz8"
39)"users_leochenlei"
40)"users_llx6888"
41)"users_pengfeihuchao"
redis127.0.0.1:6379>
redis127.0.0.1:6379>hgetusers_pengfeihuchaoemail
"294522652@qq.com"
redis127.0.0.1:6379>hgetusers_llx6888email
"linlixian200606@126.com"

好了,测试连接成功。

THE END

发表回复