標籤:開發語言 推薦 cal 開發 oca 技術分享 localhost div 使用
一、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 redisor alternatively (you really should be using pip though):$ sudo easy_install redisor 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-clusterwatch,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中所有的keyprint(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對應的valueprint(r.hmget("hash2", "k2", "k3")) # 批量取出"hash2"的key-k2 k3print(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-3print(r.lrange("list2", 0, 3))Python set類型使用簡介
# 往集合中添加元素r.sadd("set1", 33, 44, 55, 66)# 集合的長度是4print(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)) # 擷取有序集合中所有元素和分數2print(r.zrange("zset2", 0, -1, withscores=True))更多內容請看:《Redis for Python開發手冊》
Redis多API開發實踐