主頁 > 知識庫 > Python訪問Redis的詳細(xì)操作

Python訪問Redis的詳細(xì)操作

熱門標(biāo)簽:電銷機器人錄音要學(xué)習(xí)什么 如何地圖標(biāo)注公司 長春極信防封電銷卡批發(fā) 外賣地址有什么地圖標(biāo)注 預(yù)覽式外呼系統(tǒng) 煙臺電話外呼營銷系統(tǒng) 銀川電話機器人電話 企業(yè)彩鈴地圖標(biāo)注 上海正規(guī)的外呼系統(tǒng)最新報價

1.連接

測試連接是否成功:

import redis
r = redis.Redis(host='192.168.136.102', port=6379, db=0,decode_responses=True)
r.set('foo', 'bar')
print(r.get('foo'))
del r

redis 取出的結(jié)果默認(rèn)是字節(jié),我們可以設(shè)定 decode_responses=True 改成字符串。

redis 提供兩個類 Redis 和 StrictRedis, StrictRedis 用于實現(xiàn)大部分官方的命令,Redis 是 StrictRedis 的子類,用于向后兼用舊版本。

import redis   # 導(dǎo)入redis 模塊
r = redis.Redis(host='192.168.136.102', port=6379, decode_responses=True)
r.set('name', 'runoob')  # 設(shè)置 name 對應(yīng)的值
print(r['name'])
print(r.get('name'))  # 取出鍵 name 對應(yīng)的值
print(type(r.get('name')))  # 查看類型
del r

連接池

redis-py 使用 connection pool 來管理對一個 redis server 的所有連接,避免每次建立、釋放連接的開銷。
默認(rèn),每個Redis實例都會維護(hù)一個自己的連接池。可以直接建立一個連接池,然后作為參數(shù) Redis,這樣就可以實現(xiàn)多個 Redis 實例共享一個連接池。

import redis    # 導(dǎo)入redis 模塊
pool = redis.ConnectionPool(host='192.168.136.102', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
r.set('name', 'runoob')  # 設(shè)置 name 對應(yīng)的值
print(r.get('name'))  # 取出鍵 name 對應(yīng)的值

對比

2.String字符串

String使用場景:
1、用redis當(dāng)緩存層來加速讀寫性能降低后端的壓力
2、計數(shù)器
3、時間內(nèi)限制請求次數(shù)

1.String set 設(shè)置單個鍵值
set(name, value, ex=None, px=None, nx=False, xx=False)
ex:過期時間(秒),時間到了后redis會自動刪除
px:過期時間(毫秒),時間到了后redis會自動刪除。ex、px二選一即可
nx:如果設(shè)置為True,則只有name不存在時,當(dāng)前set操作才執(zhí)行
xx:如果設(shè)置為True,則只有name存在時,當(dāng)前set操作才執(zhí)行

r.set('name', 'zhangsan',ex=3)  
r.set('name', 'lisi',nx=True)  #如果設(shè)置為True,則只有name不存在時,當(dāng)前set操作才執(zhí)行
r.set('name', 'wangwu',xx=True)  #如果設(shè)置為True,則只有name存在時,當(dāng)前set操作才執(zhí)行

2.String get 獲取單個值

v = r.get('name')
print(v)

3.String mset 設(shè)置多個鍵值
mset(*args, **kwargs)

name_dict = {
    'name_1' : 'zhangsan',
    'name_2' : 'lisi'
}
r.mset(name_dict)

4.String mget 獲取多個值

mget(keys, *args)
r.mget('name_1', 'name_2')

5.String setrange 根據(jù)索引修改某個鍵的value值
setrange(name, offset, value)
返回值為:修改后的字符串長度
name:鍵,所給不存在時自動添加
offset:偏移量,以0開始
value:修改的字符或字符串,字符串時以offset向后順延

length = r.setrange('name_2', 1, 'zhihu')
print(length)

6.String getrange 根據(jù)索引獲取某個鍵的部分value值
若所給的鍵不存在時,返回空值 b''
getrange(key, start, end)

v = r.getrange('name_1', 0, 2)

7.String strlen 獲取value的長度
strlen(name)
所給的鍵不存在時,返回值為0

length = r.strlen('name_2')

8.String append value后面追加
append(key, value)
若所給的鍵不存在,則設(shè)置新值,返回值為修改后的字符串的長度

length = r.append('name_1', '666')

3.列表

1.lpush(key , value) 將一個或多個值 value 插入到列表 key 的表頭

 r.lpush('list', 'a', 'b', 'c', 'd')

2.rpush(key , value) 將一個或多個值 value 插入到列表 key 的表尾

r.rpush('rlist', 'a', 'b', 'c', 'd')

3.llen key 返回列表 key 的長度

 r.llen('list')

4.lrem key count value 根據(jù)參數(shù) count 的值,移除列表中與參數(shù) value 相等的元素

r.lrem('list',2, 'b')

4.集合

1.sadd(name,values) 向?qū)?yīng)的集合中添加元素

r.sadd("set1", 33, 44, 55, 66) 

2.scard(name)
獲取name對應(yīng)的集合中元素個數(shù)

r.scard('set1')

3.srandmember key [count] 返回集合中的 1 或 count 個隨機元素

r.srandmember("set1") 

4.spop key 移除并返回集合中的一個隨機元素獲取name對應(yīng)的集合中元素個數(shù)

r.spop('set1')

5.smove source destination member 將 member 元素從 source 集合移動到 destination 集合

  r.smove('set1', 'set2', 66)

5.哈希

1.hmset key field value [field value …]同時將多個 field-value (域-值)對設(shè)置到哈希表 key 中

r.hmset('zhangsan',{'name':'zhangsan','age':20,'tel':123456})

2.Hash hmget 獲取哈希中多個鍵值對

hmget(name, keys, *args)

返回值:值的列表 list 形如: [‘1', ‘123'] class ‘list'>

r.hmget('zhangsan', ['sex', 'tel'])

3.Hash hget 獲取指定key的值
hget(name, key)

r.hget('zhangsan', 'tel')

4.Hash hgetall 獲取哈希中所有的鍵值對
hgetall(name)
返回值:dict類型

r.hgetall('zhangsan')

6.有序集合

1.Zset zadd 有序集合中添加元素
zadd(name, *args, **kwargs)
添加元素時需指定元素的分?jǐn)?shù)
返回值:返回添加的個數(shù)

r.zadd('myzset', {'a': 3, 'b': 4,'c':5})
r.zadd('myzset', 'a', 3, 'b', 4,'c',5})  #不同版本

2.Zset zcard 返回有序集合中元素個數(shù)
zcard(name)

v = r.zcard('myzset')

3.Zset zscore 返回有序集合中指定某個值的分?jǐn)?shù)
zscore(name, value)
返回值:float 類型的分?jǐn)?shù);形如: -5.0 class ‘float'>

v = r.zscore('myzset', ‘a(chǎn)')

4.Zset zincrby 增加有序集合中某個值的分?jǐn)?shù)
zincrby(name, value, amount=1)
value:若存在,則增加其amount分?jǐn)?shù);若不存在,則增加新值以及對應(yīng)的分?jǐn)?shù)
amount:增加的值,可以為負(fù)數(shù)
返回值:增加后的分?jǐn)?shù) float類型 ;

v = r.zincrby('myzset',1,'a')

5.Zset zrevrange 返回有序集合分?jǐn)?shù)排序的一段數(shù)據(jù)
zrevrange(name, start, end, withscores=False, score_cast_func=float)
name:redis的name
start:有序集合索引起始位置(非分?jǐn)?shù))
end:有序集合索引結(jié)束位置(非分?jǐn)?shù))
withscores:是否獲取元素的分?jǐn)?shù),默認(rèn)只獲取元素的值
score_cast_func:對分?jǐn)?shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的函數(shù)
返回值:list類型

r.zadd('myzset1', {'a': 4, 'b': 2,'c':3,'d':6,'e':1,'f':9})
def double(num):
    return float(num)*float(num)
print(r.zrevrange('myzset1',0,3,withscores=True))
print(r.zrevrange('myzset1',0,3,withscores=True,score_cast_func=double))

以上就是Python訪問Redis的詳細(xì)內(nèi)容,更多關(guān)于Python訪問Redis的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python操作redis實例小結(jié)【String、Hash、List、Set等】
  • python 通過SSHTunnelForwarder隧道連接redis的方法
  • Python獲取Redis所有Key以及內(nèi)容的方法
  • python redis 刪除key腳本的實例
  • python使用pipeline批量讀寫redis的方法
  • Python連接Redis的基本配置方法
  • python中redis查看剩余過期時間及用正則通配符批量刪除key的方法

標(biāo)簽:盤錦 宜昌 佳木斯 上饒 湖北 潮州 西寧 珠海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python訪問Redis的詳細(xì)操作》,本文關(guān)鍵詞  Python,訪問,Redis,的,詳細(xì),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python訪問Redis的詳細(xì)操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python訪問Redis的詳細(xì)操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章