您好,登錄后才能下訂單哦!
程序下載http://down.51cto.com/data/2440789:
點擊客戶端進行連接測試,出現下圖說明測試成功
語法:
redis的字符串操作 set(key,value,ex=None,px=None,nx=False,xx=False) 在redis中設置值,默認,不存在則創建,存在則修改 參數: ex:過期時間(秒) px: 過期時間(毫秒) nx:如果設置為True,則只有key不存在時。當前set才會執行 xx:如果設置為True,則只有key存在時,當前set才會執行 setnx(key,value) 設置值,只有key不存在時,執行設置操作 setex(key,value,time) 設置值 參數: time:過期時間單位是秒 psetex(key,value,time) 設置值 參數: time:過期時間單位是毫秒 mset(*args,**kwargs) 批量設置值 如: mset k1 v1 k2 v2 或者mset(k1='v1',k2='v2') getset(key,value) 設置新值并返回原來的值 getrange(key,start,end) 獲取子序列(根據字節獲取,非字符) 參數: key: redis的key start:起始位置(字節) end: 結束位置(字節) 如:“張三”,0-3表示“張” setrange(key,offset,value) 修改字符串內容。從指定字符串索引開始向后替換(新值太長時,則向后添加) 參數: offset: 字符串的索引,字節(一個漢字三個字節) value: 要設置的值 setbit(key,offset,value) 對key對應的二進制表示的位進行操作 參數: key: redis的key offset:位的索引(將值變為二進制后再進行索引) value: 值只能是0或1 例: 如果在redis中有一個對應:n1 = "foo" 那么字符串“foo”的二進制表示為:01100110 01101111 01101111 如果執行setbit('n1',7,1)則就會將第七位設置為1 那么最終二進制則變成 01100111 01101111 01101111 即“goo” 代碼實現 127.0.0.1:6379> set n1 foo OK 127.0.0.1:6379> setbit n1 7 1 (integer) 0 127.0.0.1:6379> get n1 "goo" 127.0.0.1:6379> 用處: 如QQ統計在線人數,并且看誰在線: 讓1代表在線。0代表不在線 offset代表用戶對應的ID 如果用戶上線,則將該ID設置為1 用bitcount統計有多少個1,即有多少用戶在線 用getbit查看用戶是否在線 代碼實現: 127.0.0.1:6379> setbit QQ 55 1 (integer) 0 127.0.0.1:6379> setbit QQ 1000 1 (integer) 0 127.0.0.1:6379> bitcount QQ (integer) 2 127.0.0.1:6379> getbit QQ 55 (integer) 1 127.0.0.1:6379> getbit QQ 66 (integer) 0 127.0.0.1:6379> append(key,value) 在redis,key對應的值后追加 參數: key: redis的key value: 要追加的字符串 例子: 127.0.0.1:6379> get zhang "san" 127.0.0.1:6379> append zhang san (integer) 6 127.0.0.1:6379> get zhang "sansan" 127.0.0.1:6379> del key 刪除key hash 如果需要存一個班級的姓名等信息 127.0.0.1:6379> hset info key duwentao (integer) 1 127.0.0.1:6379> hset info age 20 (integer) 1 127.0.0.1:6379> hset info id 1 (integer) 1 127.0.0.1:6379> hgetall info 1) "key" 2) "duwentao" 3) "age" 4) "20" 5) "id" 6) "1" 127.0.0.1:6379> hget info age "20" 127.0.0.1:6379> hkeys info #查看有多少key 1) "key" 2) "age" 3) "id" 127.0.0.1:6379> hvals info #查看有多少value 1) "duwentao" 2) "20" 3) "1" hmset key field value [field value ...] 用法: 127.0.0.1:6379> hmset li k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> hgetall li 1) "k1" 2) "v1" 3) "k2" 4) "v2" 5) "k3" 6) "v3" hget key field 在key對應的hash中獲取根據key獲取value hmget key field [field ...] 用法: 127.0.0.1:6379> hmget li k1 k2 1) "v1" 2) "v2" hlen(key) 獲取有幾個key hkeys(key) 獲取key對應的hash中所有key的值 hvals(key) 獲取key對應的hash中所有的value值 hexists key field 檢查key對應的hash是否存在當前傳入的key hincrby key field increment 自增加 127.0.0.1:6379> hincrby info age 1 (integer) 21 127.0.0.1:6379> hincrby info age 1 (integer) 22 hscan key cursor [MATCH pattern] [COUNT count] 起到一個過濾的作用 如 hscan info 0 match *a* 列表: lpush(從左邊放)和rpush(從右邊放) 127.0.0.1:6379> lpush keys1 zhangsan lisi wanger (integer) 3 127.0.0.1:6379> LRANGE keys1 0 -1 1) "wanger" 2) "lisi" 3) "zhangsan" 127.0.0.1:6379> RPUSH keys2 zhangsan lizi wanger (integer) 3 127.0.0.1:6379> LRANGE keys2 0 -1 1) "zhangsan" 2) "lizi" 3) "wanger" 127.0.0.1:6379> lpushx key value 在key對應的list中添加元素,只對key已經存在時,值添加到列表的最左邊 rpushx key value 在key對應的list中添加元素,只對key已經存在時,值添加到列表的最右邊 llen key key對應的list元素個數 LINSERT key BEFORE|AFTER pivot value 在key對應的列表的某一個值前或后插入一個新值 參數: key: redis的key BEFORE|AFTER: 在什么或者后 privot: 標桿值,即在他前后插入數據 value: 要插入的數據 lset key index value 對key對應的list中的某一個索引位置進行重新賦值 參數: key: redis的key值 index:list的索引位置 value:要設置的值 lrem key count value 在key對應的list中刪除指定的值 參數: key:redis的key value:要刪除的值 count: count=0: 刪除列表中所有的指定的值 count=2: 從前向后,刪除兩個 count=-2:從后向前,刪除兩個 lpop key 在key對應的列表的左側獲取第一個元素并在列表中刪除,返回值則是第一個元素。 lindex key index 在key中對應的列表中根據索引獲取列表元素 LRANGE key start stop 在key對應的列表分片獲取數據 參數: key: redis的key start:索引的起始位置 end: 索引的結束位置 LTRIM key start stop 在key對應的列表中移除沒有在start stop索引之間的值 參數: key:redis的key start:索引的起始位置 stop:索引的結束位置 RPOPLPUSH source destination 從一個表中取出最右邊的元素,同時將其添加至另一個列表的最左邊 參數: source: 要取出數據的列表的key destination:要添加數據的列表的key BRPOPLPUSH source destination timeout 從一個列表的右側移除一個元素并將其添加到另一個列表的左側 參數: source:取出并移除元素的列表對應的key destination:要插入元素的列表對應的key timeout:當source對應的列表中沒有數據時,阻塞等待其數據的超時時間(秒),0表示永遠堵塞 集合: sadd key member [member ...] key對應的集合中添加元素(無重復,無序) 如: 127.0.0.1:6379> sadd names3 zhangsan zhangsan lisi lisi 3 3 (integer) 3 127.0.0.1:6379> SMEMBERS names3 #獲取所有值 1) "3" 2) "lisi" 3) "zhangsan" scard key 獲取key對應的集合中的元素個數 sdiff key [key ...] 在第一個key對應的集合中且不在其他key對應的集合中的元素 sdiffstore destination key [key ...] 在第一個key對應的集合中且不在其他key對應的集合中的元素,把他添加到destination里 SINTER key1 [key2] 返回給定所有集合的交集 SINTERSTORE destination key1 [key2] 返回給定所有集合的交集并存儲在 destination 中 SISMEMBER key member 判斷 member 元素是否是集合 key 的成員 SMEMBERS key 返回集合中的所有成員 SMOVE source destination member 將 member 元素從 source 集合移動到 destination 集合 SPOP key 移除并返回集合中的一個隨機元素 SRANDMEMBER key [count] 返回集合中一個或多個隨機數 SREM key member1 [member2] 移除集合中一個或多個成員 SUNION key1 [key2] 返回所有給定集合的并集 SUNIONSTORE destination key1 [key2] 所有給定集合的并集存儲在 destination 集合中 SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素 有序集合: ZADD key score1 member1 [score2 member2] 向有序集合添加一個或多個成員,或者更新已存在成員的分數 ZCARD key 獲取有序集合的成員數 ZCOUNT key min max 計算在有序集合中指定區間分數的成員數 ZINCRBY key increment member 有序集合中對指定成員的分數加上增量 increment ZINTERSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的交集并將結果集存儲在新的有序集合 key 中 ZLEXCOUNT key min max 在有序集合中計算指定字典區間內成員數量 ZRANGE key start stop [WITHSCORES] 通過索引區間返回有序集合成指定區間內的成員 ZRANGEBYLEX key min max [LIMIT offset count] 通過字典區間返回有序集合的成員 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] 通過分數返回有序集合指定區間內的成員 ZRANK key member 返回有序集合中指定成員的索引 ZREM key member [member ...] 移除有序集合中的一個或多個成員 ZREMRANGEBYLEX key min max 移除有序集合中給定的字典區間的所有成員 ZREMRANGEBYRANK key start stop 移除有序集合中給定的排名區間的所有成員 ZREMRANGEBYSCORE key min max 移除有序集合中給定的分數區間的所有成員 ZREVRANGE key start stop [WITHSCORES] 返回有序集中指定區間內的成員,通過索引,分數從高到底 ZREVRANGEBYSCORE key max min [WITHSCORES] 返回有序集中指定分數區間內的成員,分數從高到低排序 ZREVRANK key member 返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序 ZSCORE key member 返回有序集中,成員的分數值 ZUNIONSTORE destination numkeys key [key ...] 計算給定的一個或多個有序集的并集,并存儲在新的 key 中 ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成員和元素分值)
安裝python 模塊
pip3 install redis
Python 線程池連接redis
普通連接redis
管道:一次可以執行多個命令
import redis pool = redis.ConnectionPool(host='127.0.0.1',port=6379) #連接池 #r = redis.Redis(host='127.0.0.1',port=6379) r = redis.Redis(connection_pool=pool) pipe = r.pipeline(transaction=True) r.set('foo','bar') r.set('zhangsan','heheheh') pipe.execute()
實現訂閱和發布
服務端(發布端):
import redis pool = redis.ConnectionPool(host="127.0.0.1",port='6379') rc = redis.Redis(connection_pool=pool) while True: mes = str(input("請輸入要發布的內容:")) rc.publish('fm100.5', mes)
客戶端(訂閱端):
import redis pool = redis.ConnectionPool(host="127.0.0.1",port='6379') rc = redis.Redis(connection_pool=pool) ps = rc.pubsub() #打開 ps.subscribe(['fm100.5']) #調頻 for item in ps.listen(): #監聽 if item['type'] == 'message': data = item['data'] print(data.decode('utf-8'))
微信公眾號
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。