Redis多API開發實踐

1、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開發手冊》
相關文章
相關標籤/搜索