我是java程序员,对python不是很熟悉,只是写书的需要,要了解一下redis的python客户端,欢迎拍砖。
一、redis的python客户端
去redis的官网看了一下http://redis.io/clients#python,python的客户端如下:
所以按照经验,已经相关的文章推荐,我选取redis-py作为实验目标。
redis-py的官网是:https://github.com/andymccurdy/redis-py
二、python环境升级
简单了解了一下,redis-py需要python的版本为2.7,linux服务器上自带的是2.6.6或者更低的版本,所以这里要涉及到了版本升级问题(2.6.6->2.7)
搜索了一下,找到这篇文章:Centos 6.4 python 2.6 升级到 2.7
查看python的版本
#python -V Python 2.6.61.下载Python-2.7.3
wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz22.解压
./configure make all make install make clean make distclean5.查看版本信息
mv /usr/bin/python /usr/bin/python2.6.6 ln -s /usr/local/bin/python2.7 /usr/bin/python
7.重新检验Python 版本
#vi /usr/bin/yum 将文件头部的 #!/usr/bin/python 改成 #!/usr/bin/python2.6.6python要想使用redis需要一个模块来连接redis,这个可以理解,就像java的redis的客户端jedis一样。 这个模块的安装命令是什么呢?搜索+官网看都给出了三种方式: 1,2种:应该是通过软件包来安装,pip和easy_install应该是类似于linux的yum那样能安装python需要的插件和相关功能。好处:简单。缺点:redis-py版本可能不是最新的。(猜测) 3种:从源代码安装,好处:redis-py的版本可控,缺点:稍微麻烦一些。 To install redis-py, simply:
pip install redis我们这里使用pip进行安装: 在 pip的python官网上我们可以看到,pip 是“ A tool for installing and managing Python packages.”,也就是说pip是python的软件安装工具。 于是找到这篇文章: Linux 下安装python软件包(pip、nose、virtualenv、distribute ) 2. 安装: (a) pip需要setuptools:
(1)下载setuptools包 wget "http://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz" --no-check-certificate (2)解压setuptools包 tar zxvf setuptools-2.0.tar.gz cd setuptools-2.0 (3)编译setuptools python setup.py build (4)开始执行setuptools安装 # python setup.py install(b) 安装pip
(1) wget "https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz" --no-check-certificate (2) tar -xvf pip-1.4.1.tar.gz (3) cd pip-1.4.1/ (4) python setup.py install
pip install redis1. 单机模式
import redis client = redis.StrictRedis(host='127.0.0.1', port=6379) key = "hello" client.set(key, "python-redis") value = client.get(key) print "key:" + key + ", value:" + value打印:
key:hello, value:python-redis2. sentinel模式 官网:
>>> from redis.sentinel import Sentinel >>> sentinel = Sentinel([('localhost', 26379)], socket_timeout=0.1) >>> sentinel.discover_master('mymaster') ('127.0.0.1', 6379) >>> sentinel.discover_slaves('mymaster') [('127.0.0.1', 6380)] >>> master = sentinel.master_for('mymaster', socket_timeout=0.1) >>> slave = sentinel.slave_for('mymaster', socket_timeout=0.1) >>> master.set('foo', 'bar') >>> slave.get('foo') 'bar'3. cluster模式 (1) redis-py并没有提供redis-cluster的支持,去github找了一下,有个叫redis-py-cluster的源码,但是和redis-py不是一个作者,地址为: https://github.com/Grokzen/redis-py-cluster watch,star,fork还算可以。 (2) 安装 Latest stable release from pypi
$ pip install redis-py-cluster(3) 使用
>>> from rediscluster import StrictRedisCluster >>> startup_nodes = [{"host": "127.0.0.1", "port": "7000"}] >>> # Note: decode_responses must be set to True when used with python3 >>> rc = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True) >>> rc.set("foo", "bar") True >>> print(rc.get("foo")) 'bar'