標籤:redis
程式下載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的keystart:起始位置(位元組)end: 結束位置(位元組)如:“張三”,0-3表示“張”setrange(key,offset,value)修改字串內容。從指定字串索引開始向後替換(新值太長時,則向後添加)參數:offset: 字串的索引,位元組(一個漢字三個位元組)value: 要設定的值setbit(key,offset,value)對key對應的二進位表示的位進行巨集指令引數:key: redis的keyoffset:位的索引(將值變為二進位後再進行索引)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 fooOK127.0.0.1:6379> setbit n1 7 1(integer) 0127.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) 0127.0.0.1:6379> setbit QQ 1000 1(integer) 0127.0.0.1:6379> bitcount QQ(integer) 2127.0.0.1:6379> getbit QQ 55(integer) 1127.0.0.1:6379> getbit QQ 66(integer) 0127.0.0.1:6379>append(key,value)在redis,key對應的值後追加參數:key:redis的keyvalue: 要追加的字串例子:127.0.0.1:6379> get zhang"san"127.0.0.1:6379> append zhang san(integer) 6127.0.0.1:6379> get zhang"sansan"127.0.0.1:6379>del key刪除keyhash如果需要存一個班級的姓名等資訊127.0.0.1:6379> hset info key duwentao(integer) 1127.0.0.1:6379> hset info age 20(integer) 1127.0.0.1:6379> hset info id 1(integer) 1127.0.0.1:6379> hgetall info1) "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 #查看有多少key1) "key"2) "age"3) "id"127.0.0.1:6379> hvals info #查看有多少value1) "duwentao"2) "20"3) "1"hmset key field value [field value ...]用法:127.0.0.1:6379> hmset li k1 v1 k2 v2 k3 v3OK127.0.0.1:6379> hgetall li1) "k1"2) "v1"3) "k2"4) "v2"5) "k3"6) "v3"hget key field在key對應的hash中擷取根據key擷取valuehmget key field [field ...]用法:127.0.0.1:6379> hmget li k1 k21) "v1"2) "v2"hlen(key)擷取有幾個keyhkeys(key)擷取key對應的hash中所有key的值hvals(key)擷取key對應的hash中所有的value值hexists key field檢查key對應的hash是否存在當前傳入的keyhincrby key field increment自增加127.0.0.1:6379> hincrby info age 1(integer) 21127.0.0.1:6379> hincrby info age 1(integer) 22hscan key cursor [MATCH pattern] [COUNT count]起到一個過濾的作用如 hscan info 0 match *a*列表:lpush(從左邊放)和rpush(從右邊放)127.0.0.1:6379> lpush keys1 zhangsan lisi wanger(integer) 3127.0.0.1:6379> LRANGE keys1 0 -11) "wanger"2) "lisi"3) "zhangsan"127.0.0.1:6379> RPUSH keys2 zhangsan lizi wanger(integer) 3127.0.0.1:6379> LRANGE keys2 0 -11) "zhangsan"2) "lizi"3) "wanger"127.0.0.1:6379>lpushx key value在key對應的list中添加元素,只對key已經存在時,值添加到列表的最左邊rpushx key value在key對應的list中添加元素,只對key已經存在時,值添加到列表的最右邊llen keykey對應的list元素個數LINSERT key BEFORE|AFTER pivot value在key對應的列表的某一個值前或後插入一個新值參數:key: redis的keyBEFORE|AFTER: 在什麼或者後privot: 標杆值,即在他前後插入資料value: 要插入的資料lset key index value對key對應的list中的某一個索引位置進行重新賦值參數:key: redis的key值index:list的索引位置value:要設定的值lrem key count value在key對應的list中刪除指定的值參數:key:redis的keyvalue:要刪除的值count:count=0: 刪除列表中所有的指定的值count=2: 從前向後,刪除兩個count=-2:從後向前,刪除兩個lpop key在key對應的列表的左側擷取第一個元素並在列表中刪除,傳回值則是第一個元素。lindex key index在key中對應的列表中根據索引擷取列表元素LRANGE key start stop在key對應的列表分區擷取資料參數:key: redis的keystart:索引的起始位置end: 索引的結束位置LTRIM key start stop在key對應的列表中移除沒有在start stop索引之間的值參數:key:redis的keystart:索引的起始位置stop:索引的結束位置RPOPLPUSH source destination從一個表中取出最右邊的元素,同時將其添加至另一個列表的最左邊參數:source: 要取出資料的列表的keydestination:要添加資料的列表的keyBRPOPLPUSH source destination timeout從一個列表的右側移除一個元素並將其添加到另一個列表的左側參數:source:取出並移除元素的列表對應的keydestination:要插入元素的列表對應的keytimeout:當source對應的列表中沒有資料時,阻塞等待其資料的逾時時間(秒),0表示永遠堵塞集合:sadd key member [member ...]key對應的集合中添加元素(無重複,無序)如:127.0.0.1:6379> sadd names3 zhangsan zhangsan lisi lisi 3 3(integer) 3127.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 有序集合中對指定成員的分數加上增量 incrementZINTERSTORE 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 redispool = 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()
公眾號
redis安裝,文法和Python串連