一, Redis API 支持
Redis 提供了各类开发语言的 API, 方便开发语言连接使用 Redis.
https://redis.io/clients
官方网站提供了不同开发语言的 API 程序.
Python 连接 redis
https://redis.io/clients#python
官网中, 给我们提供了很多种 Python 连接 redis 的 API, 我们通常选择有 "笑脸" 并且带有 "星号" 的使用
这里我们推荐使用 redis-py.
redis-py 安装方式
- redis-py requires a running Redis server. See Redis's quickstart for installation instructions.
- To install redis-py, simply:
- $ sudo pip install redis
- or alternatively (you really should be using pip though):
- $ sudo easy_install redis
- or from source:
- $ sudo python setup.py install
Python 连接 Redis
redis-py 提供的, python 连接及操作 redis 方式:
redis-py 提供两个类 Redis 和 StrictRedis 用于实现 Redis 的命令. StrictRedis 用于实现大部分官方的命令, 并使用官方的语法和命令 (比如, SET 命令对应与 StrictRedis.set 方法).
Redis 是 StrictRedis 的子类, 用于向后兼容旧版本的 redis-py.
简单说, 官方推荐使用 StrictRedis 方法. 不推荐 Redis 类, 原因是他和咱们在 redis-cli 操作有些不一样, 主要不一样是下面这三个方面.
redis 连接分片集群
(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
- or from source
- $ python setup.py install
(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'
python 连接 redis 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'
Python String 类型使用简介
String 类型基本操作:
- r.set('foo', 'Bar')
- print (r.get('foo'))
- r.mset(k1="v1",k2="v2")
- r.mget('k1','k2')
- r.incr('num')
- r.get('num')
- r.incr('num')
- r.get('num')
Python hash 类型使用简介
- # 插入 hash 类型键值
- r.hset("hash1", "k1", "v1")
- r.hset("hash1", "k2", "v2")
- # 取 hash 中所有的 key
- print(r.hkeys("hash1"))
- # 单个取 hash 的 key 对应的值
- print(r.hget("hash1", "k1"))
- # 多个取 hash 的 key 对应的值
- print(r.hmget("hash1", "k1", "k2"))
- # 批量设置
- r.hmset("hash2", {"k2": "v2", "k3": "v3"})
- # 批量取出
- print(r.hget("hash2", "k2")) # 单个取出 "hash2" 的 key-k2 对应的 value
- print(r.hmget("hash2", "k2", "k3")) # 批量取出 "hash2" 的 key-k2 k3
- print(r.hmget("hash2", ["k2", "k3"])) # 批量取出 "hash2" 的 key-k2 k3 对应的 value
- # 取出所有的键值对
- hgetall(name)
Python list 类型使用简介
- # 设置列表:
- r.lpush("list1", 11, 22, 33)
- # 查询列表所有值
- print(r.lrange('list1', 0, -1))
- # 表示从右向左设置列表
- r.rpush("list2", 11, 22, 33)
- # 列表长度
- print(r.llen("list2"))
- # 切片取出值, 范围是索引号 0-3
- print(r.lrange("list2", 0, 3))
Python set 类型使用简介
- # 往集合中添加元素
- r.sadd("set1", 33, 44, 55, 66)
- # 集合的长度是 4
- print(r.scard("set1"))
- # 获取集合中所有的成员
- print(r.smembers("set1"))
Python sort set 类型使用简介
- # 对应的有序集合中添加元素
- r.zadd("zset1", n1=11, n2=22)
- r.zadd("zset2", 'm1', 22, 'm2', 44)
- # 集合长度
- print(r.zcard("zset1"))
- # 集合长度
- print(r.zcard("zset2"))
- # 获取有序集合中所有元素
- print(r.zrange("zset1", 0, -1))
- # 获取有序集合中所有元素和分数 2
- print(r.zrange("zset2", 0, -1, withscores=True))
更多内容请看:Redis for Python 开发手册
来源: https://www.cnblogs.com/hwlong/p/9332663.html