Redis多API开发实践
2021-03-28 11:24
标签:开发语言 推荐 cal 开发 oca 技术分享 localhost div 使用 Redis多API开发实践 标签:开发语言 推荐 cal 开发 oca 技术分享 localhost div 使用 原文地址:https://www.cnblogs.com/hwlong/p/9332663.html一、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开发手册》