在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"
好了,测试连接成功。
上一篇