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