欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年06月25日 16:56:36   作者:傍ྂ離ྂ  
redis 提供兩個(gè)類(lèi) Redis 和 StrictRedis, StrictRedis 用于實(shí)現(xiàn)大部分官方的命令,Redis 是 StrictRedis 的子類(lèi),用于向后兼用舊版本,接下來(lái)通過(guò)本文給大家分享Python訪問(wèn)Redis的詳細(xì)操作,需要的朋友參考下吧

1.連接

測(cè)試連接是否成功:

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 提供兩個(gè)類(lèi) Redis 和 StrictRedis, StrictRedis 用于實(shí)現(xiàn)大部分官方的命令,Redis 是 StrictRedis 的子類(lèi),用于向后兼用舊版本。

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

連接池

redis-py 使用 connection pool 來(lái)管理對(duì)一個(gè) redis server 的所有連接,避免每次建立、釋放連接的開(kāi)銷(xiāo)。
默認(rèn),每個(gè)Redis實(shí)例都會(huì)維護(hù)一個(gè)自己的連接池??梢灾苯咏⒁粋€(gè)連接池,然后作為參數(shù) Redis,這樣就可以實(shí)現(xiàn)多個(gè) Redis 實(shí)例共享一個(gè)連接池。

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 對(duì)應(yīng)的值
print(r.get('name'))  # 取出鍵 name 對(duì)應(yīng)的值

對(duì)比

在這里插入圖片描述

2.String字符串

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

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

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

2.String get 獲取單個(gè)值

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

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

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

4.String mget 獲取多個(gè)值

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

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

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

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

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

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

length = r.strlen('name_2')

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

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

3.列表

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

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

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

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

3.llen key 返回列表 key 的長(zhǎng)度

 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對(duì)應(yīng)的集合中元素個(gè)數(shù)

r.scard('set1')

3.srandmember key [count] 返回集合中的 1 或 count 個(gè)隨機(jī)元素

r.srandmember("set1") 

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

r.spop('set1')

5.smove source destination member 將 member 元素從 source 集合移動(dòng)到 destination 集合

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

5.哈希

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

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

2.Hash hmget 獲取哈希中多個(gè)鍵值對(duì)

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 獲取哈希中所有的鍵值對(duì)
hgetall(name)
返回值:dict類(lèi)型

r.hgetall('zhangsan')

6.有序集合

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

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

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

v = r.zcard('myzset')

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

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

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

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:對(duì)分?jǐn)?shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換的函數(shù)
返回值:list類(lèi)型

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訪問(wèn)Redis的詳細(xì)內(nèi)容,更多關(guān)于Python訪問(wèn)Redis的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論