溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

redis安裝,語法和Python連接

發(fā)布時(shí)間:2020-09-06 20:04:28 來源:網(wǎng)絡(luò) 閱讀:1228 作者:天道酬勤VIP 欄目:數(shù)據(jù)庫


程序下載http://down.51cto.com/data/2440789:


點(diǎn)擊客戶端進(jìn)行連接測(cè)試,出現(xiàn)下圖說明測(cè)試成功

redis安裝,語法和Python連接

redis安裝,語法和Python連接


語法:

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安裝,語法和Python連接

普通連接redis


redis安裝,語法和Python連接


管道:一次可以執(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)

redis安裝,語法和Python連接


向AI問一下細(xì)節(jié)

免責(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)容。

AI