Redis多API开发实践
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis多API开发实践相关的知识,希望对你有一定的参考价值。
一、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开发手册》
以上是关于Redis多API开发实践的主要内容,如果未能解决你的问题,请参考以下文章