• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    (收藏)Python操作Redis的全面總結(jié)

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:20:54
    文檔

    (收藏)Python操作Redis的全面總結(jié)

    (收藏)Python操作Redis的全面總結(jié):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于(收藏)Python操作Redis的全面總結(jié),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。一、字符串 stringsPython操作Redis的redis模塊對字符串(string)的主要操作函數(shù)包括:SET、GET、GETSET、
    推薦度:
    導(dǎo)讀(收藏)Python操作Redis的全面總結(jié):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于(收藏)Python操作Redis的全面總結(jié),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。一、字符串 stringsPython操作Redis的redis模塊對字符串(string)的主要操作函數(shù)包括:SET、GET、GETSET、

    本篇文章給大家?guī)淼膬?nèi)容是關(guān)于(收藏)Python操作Redis的全面總結(jié),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。

    一、字符串 strings

    Python操作Redis的redis模塊對字符串(string)的主要操作函數(shù)包括:SET、GET、GETSET、SETEX、SETNX、MSET、MSETNX、INCR(INCRBY,DECR,DECRBY在python中庸同一個(gè)函數(shù)incr實(shí)現(xiàn))、APPEND、SETRANGE、STRLEN。函數(shù)說明如下:

    1. SET: 為指定的鍵(key)設(shè)置值(value), set(self, name, value, **kwargs)。

    2. GET:獲取指定鍵(key)綁定的值(value),get(self, name)。

    3. GETSET:為指定的鍵(key)設(shè)置新的值(value),并返回舊的值(old Value),getset(self, name, value)

    4. SETEX:為指定的鍵(key)設(shè)置過期以秒(second)計(jì)的過期時(shí)間,setex(self, name, value, time)

    5. SETNX:鍵(key)不存在時(shí),為鍵(key)指定值(value),setnx(self, name, value)

    6. MSET:一次性設(shè)置多個(gè)鍵-值(key-value)對,函數(shù)設(shè)置的鍵-值對(即mapping所指內(nèi)容)數(shù)據(jù)要以Python字典數(shù)據(jù)類型傳入,mset(self, mapping)

    7. MSETNX:鍵-值(key-value)對不存在時(shí),設(shè)置鍵-值(key-value)對,msetnx(self, mapping),mapping值參考6

    8. INCR:自增函數(shù),默認(rèn)步長為1,通過對步長(amount)大小以及字符的控制實(shí)現(xiàn)了INCRBY(amount>=1)、DECR(amount=-1)、DECRBY(amount<=-1)等函數(shù)功能,incr(self, name, amount=1)

    9. APPEND:為指定的字符串追加值,若不存在則直接創(chuàng)建,append(self, key, value)

    10. SETRANGE:用 value 參數(shù)覆寫給定 key 所儲存的字符串值,從偏移量 offset 開始,setrange(self, name, offset, value)

    11. STRLEN:返回字符串的長度,當(dāng)name不存在時(shí)返回0,strlen(self, name)

    示例代碼如下:

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    # __author__ = 'Jack'
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    r.flushall() # 清空Redis
    
    r.setex('name', value='liaogx', time=2) # 設(shè)置新值,過期時(shí)間為3s
    r.mset(k1 = 'v1', k2 = 'v2', k3 = 'v3') # 批量設(shè)置新值
    print(r.mget('k1', 'k2', 'k3', 'k4')) # 批量獲取新值
    print(r.getset('name', 'liaogaoxiang')) # 設(shè)置新值并獲取原來的值
    print(r.getrange('name', 0, 1)) # 獲取子序列 0 <= x <= 1
    r.setrange('name', 0, 'LIAO') # 修改字符串內(nèi)容,從指定字符串索引開始向后替換(新值太長時(shí),則向后添加),返回值的長度
    i = 0
    while i < 4:
     print(r.get('name'))
     time.sleep(1)
     i += 1
    source = 'foo'
    r.set('n1', source)
    r.setbit('n1', 7, 1)
    '''
    注:如果在Redis中有一個(gè)對應(yīng): n1 = "foo",
     那么字符串foo的二進(jìn)制表示為:01100110 01101111 01101111
     所以,如果執(zhí)行 setbit('n1', 7, 1),則就會將第7位設(shè)置為1,
     那么最終二進(jìn)制則變成 01100111 01101111 01101111,即:"goo"
    '''
    print(r.get('n1'))
    print(r.getbit('n1', 7)) # 獲取n1對應(yīng)的值的二進(jìn)制表示中的某位的值 (0或1)
    r.set('n2', '廖高祥')
    print(r.strlen('n2')) # 返回對應(yīng)的字節(jié)長度(一個(gè)漢字3個(gè)字節(jié))
    r.set('num', 1)
    r.incr('num', amount=10)
    r.decr('num', amount=1)
    print(r.get('num')) # 自增num對應(yīng)的值,當(dāng)name不存在時(shí),則創(chuàng)建name=amount,否則,則自增。
    r.append('num', 111)
    print(r.get('num')) # 在redis num對應(yīng)的值后面追加內(nèi)容

    輸出結(jié)果如下:

    [b'v1', b'v2', b'v3', None]
    b'liaogx'
    b'li'
    b'LIAOgaoxiang'
    b'LIAOgaoxiang'
    b'LIAOgaoxiang'
    b'LIAOgaoxiang'
    b'goo'
    1
    9
    b'10'
    b'10111'

    二、列表 lists

    Python操作Redis主要利用了redis模塊來實(shí)現(xiàn),list表操作函數(shù)主要模擬了Redis操作命令LPUSH,LRANGE,LINDEX,BLPOP,BRPOP。函數(shù)說明如下:

    1. lpush函數(shù)實(shí)現(xiàn)了從向指定redis列表頭部壓入數(shù)據(jù)功能,lpush key value

    2. lrange獲取列表指定范圍的函數(shù),lrange key start end

    3. lindex根據(jù)列表下標(biāo)量獲取列表元素值, lindex key index

    4. blpop從列表頭部取出第一個(gè)元素,返回該元素值并從列表刪除(l代表left,左邊)

    5. brpop從列表尾部取出第一個(gè)元素,返回該元素值并從列表刪除(l代表right,右邊)

    6. LPUSHX、RPUSHX以及其他一些Redis列表(List)函數(shù)目前版本無法實(shí)現(xiàn),如有可實(shí)現(xiàn)方法博客代碼事例將會得到更新。

    示例代碼如下:

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    # __author__ = 'Jack'
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    r.flushall() # 清空Redis
    
    r.lpush('oo', 11) # 保存順序?yàn)? 33,22,11
    r.lpushx('oo', 00) # 在name對應(yīng)的list中添加元素,只有name已經(jīng)存在時(shí),值添加到列表的最左邊
    print(r.llen('oo')) # name對應(yīng)的list元素的個(gè)數(shù)
    
    r.linsert('oo', 'before', 11, 99) # 在11之前插入值99
    r.lset('oo', 1, 88) # 對name對應(yīng)的list中的某一個(gè)索引位置重新賦值
    print(r.lrange('oo', 0, -1)) # 在name對應(yīng)的列表分片獲取數(shù)據(jù)
    
    r.lrem('oo', 88, num=1) # 在name對應(yīng)的list中刪除指定的值.num=0,刪除列表中所有的指定值;num=2,從前到后,刪除2個(gè);num=-2,從后向前,刪除2個(gè)
    print(r.lrange('oo', 0, -1))
    
    print(r.lpop('oo')) # 在name對應(yīng)的列表的左側(cè)獲取第一個(gè)元素并在列表中移除,返回值則是第一個(gè)元素
    print(r.lindex('oo', 0)) # 在name對應(yīng)的列表中根據(jù)索引獲取列表元素
    r.lpush('l1', 11) # index為0
    r.rpush('l1', 22)
    r.rpush('l1', 33)
    r.rpush('l1', 44)
    r.rpush('l1', 55) # index為4
    r.ltrim('l1', 1, 3) # 在name對應(yīng)的列表中移除沒有在[start-end]索引之間的值
    print(r.lrange('l1', 0, -1))
    
    r.rpoplpush('l1', 'l1') # 從一個(gè)列表取出最右邊的元素,同時(shí)將其添加至另一個(gè)列表的最左邊;src要取數(shù)據(jù)的列表的name, dst要添加數(shù)據(jù)的列表的name
    print(r.lrange('l1', 0, -1))
    
    r.brpoplpush('l1', 'l1', timeout=3) # # timeout,當(dāng)src對應(yīng)的列表中沒有數(shù)據(jù)時(shí),阻塞等待其有數(shù)據(jù)的超時(shí)時(shí)間(秒),0 表示永遠(yuǎn)阻塞
    print(r.lrange('l1', 0, -1))
    
    print(r.blpop('l1', 3)) # 從列表頭部取出第一個(gè)元素,返回該元素值并從列表刪除(l代表left,左邊)
    print(r.lrange('l1', 0, -1))
    '''
     # 由于redis類庫中沒有提供對列表元素的增量迭代,如果想要循環(huán)name對應(yīng)的列表的所有元素,那么就需要:
     # 1、獲取name對應(yīng)的所有列表
     # 2、循環(huán)列表
     # 但是,如果列表非常大,那么就有可能在第一步時(shí)就將程序的內(nèi)容撐爆,所有有必要自定義一個(gè)增量迭代的功能:
    '''
    print('自定義增量迭代:')
    r.flushall()
    r.lpush('l1', 11) # index為0
    r.rpush('l1', 22)
    r.rpush('l1', 33)
    r.rpush('l1', 44)
    r.rpush('l1', 55) # index為4
    
    def list_iter(name):
     list_count = r.llen(name)
     for index in range(list_count):
     yield r.lindex(name, index)
    
    for item in list_iter('l1'):
     print(item)

    輸出結(jié)果如下:

    2
    [b'0', b'88', b'11']
    [b'0', b'11']
    b'0'
    b'11'
    [b'22', b'33', b'44']
    [b'44', b'22', b'33']
    [b'33', b'44', b'22']
    (b'l1', b'33')
    [b'44', b'22']
    自定義增量迭代:
    b'11'
    b'22'
    b'33'
    b'44'
    b'55'

    三、集合 sets

    Redis 數(shù)據(jù)庫集合對象(set object)是由string類型的無重復(fù)元素的無需集合,底層編碼可以是intset或者h(yuǎn)ashtable。intset編碼的集合對象用整數(shù)集合最為底層實(shí)現(xiàn),所有對象元素保存在整數(shù)集合中。Python的redis模塊實(shí)現(xiàn)了 SADD、SCARD 、SDIFF 、SDIFFSTORE、SINTER 、SINTERSTORE、SISMEMBER 、SMEMBERS 、SMOVE、SPOP、SRANDMEMBER、SREM、SUNION、SUNIONSTORE操作命令的基本用法。函數(shù)說明如下:

    1. SADD:向集合對象添加成員,sadd(self, name, value)

    2. SCARD:獲取集合元素個(gè)數(shù),scard(self, name)

    3. SDIFF:返回給定多個(gè)集合對象的差集(set key1-set key2..-set keyn),從左到右計(jì)算集合差集,sdiff(self, keys, *args)

    4. SDIFFSTORE:返回給定給定多個(gè)集合對象的差集并存儲在目標(biāo)(dest)集合中,sdiffstore(self, dest, keys, *args)

    5. SINTER:返回給定所有集合(keys, args)的交集, sinter(self, keys, args)

    6. SINTERSTORE:返回給定所有集合(keys, args)的交集并存儲在 集合(dest) 中, sinterstore(self, dest, keys, args)

    7. SISMEMBER:判斷 value元素是否是集合 name 的成員,返回布爾邏輯值True或者False,sismember(self, name, value)

    8. SMEMBERS:返回集合中所元素值的Python集合類型數(shù)據(jù),smembers(self, name)

    9. SMOVE:將元素value從集合src移動到 集合 dest。若元素value在集合src中不存在,則集合dest中不會添加元素value, smove(self, src, dest, value)

    10. SPOP:移除并返回集合中的一個(gè)隨機(jī)元素, spop(self, name)

    11. SRANDMEMBER:返回集合中一個(gè)隨機(jī)數(shù),但是不做移除操作, srandmember(self, name)。從Redis 2.6 版本開始, 在命令行下Srandmember 命令接受可選返回元素?cái)?shù)量的參數(shù) redis>SRANDMEMBER name count

    12. SREM:移除集合中一個(gè)元素,srem(self, name, value),redis模塊任然沿用Redis 2.4 版本以前的只接受單個(gè)元素的用法。

    13. SUNION:返回所有給定集合的并集中所有元素,sunion(self, keys, *args)

    14. SUNIONSTORE:所有給定集合的并集存儲在集合dest 中, sunionstore(self, dest, keys, *args)

    15. SSCAN:迭代集合中的元素,sscan(self, name, cursor=0, match=None, count=None)

    示例代碼如下:

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    # __author__ = 'Jack'
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    r.flushall() # 清空Redis
    
    r.sadd('s1', 'v1', 'v1', 'v2', 'v3') # name對應(yīng)的集合中添加元素
    r.sadd('s2', 'v2', 'v4') # name對應(yīng)的集合中添加元素
    print(r.scard('s1')) # 獲取name對應(yīng)的集合中元素個(gè)數(shù)
    print(r.sdiff('s1', 's2')) #在第一個(gè)name對應(yīng)的集合中且不在其他name對應(yīng)的集合的元素集合
    
    r.sdiffstore('s3', 's1', 's2') # 獲取第一個(gè)name對應(yīng)的集合中且不在其他name對應(yīng)的集合,再將其新加入到dest對應(yīng)的集合中
    print(r.smembers('s3')) # 獲取s3對應(yīng)的集合的所有成員
    
    print(r.sinter('s1', 's2')) # 獲取s1, s2對應(yīng)集合的交集
    r.sinterstore('s4', 's1', 's2') # 獲取s1, s2對應(yīng)集合的交集,并將其存放到集合是s4中
    print(r.smembers('s4'))
    
    print(r.sunion('s1', 's2')) # 獲取s1, s2對應(yīng)集合的并集
    
    r.sunionstore('s5', 's1', 's2') # 獲取s1, s2對應(yīng)集合的交集,并將其存放到集合是s5中
    print(r.smembers('s5'))
    
    print(r.sismember('s4', 'v4')) # 檢查value是否是name對應(yīng)的集合的成員
    
    r.smove('s2', 's1', 'v4') # 將集合s2中成員v4移至集合s1中
    print(r.smembers('s1'))
    r.srem('s1', 'v1') # 在name對應(yīng)的集合中刪除某些值
    
    print(r.spop('s1')) # 從集合的右側(cè)(尾部)移除一個(gè)成員,并將其返回 注意:集合是無序的,故結(jié)果隨機(jī)!
    
    print(r.srandmember('s1')) # 從name對應(yīng)的集合中隨機(jī)獲取 numbers 個(gè)元素(Redis 2.6+)

    輸出結(jié)果如下:

    3
    {b'v3', b'v1'}
    {b'v3', b'v1'}
    {b'v2'}
    {b'v2'}
    {b'v3', b'v2', b'v4', b'v1'}
    {b'v3', b'v2', b'v4', b'v1'}
    False
    {b'v3', b'v2', b'v4', b'v1'}
    b'v2'
    b'v3'

    四、有序集合 sorted sets

    命令描述
    Redis Zadd 命令向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù)
    Redis Zcard 命令獲取有序集合的成員數(shù)
    Redis Zcount 命令計(jì)算在有序集合中指定區(qū)間分?jǐn)?shù)的成員數(shù)
    Redis Zincrby 命令有序集合中對指定成員的分?jǐn)?shù)加上增量 increment
    Redis Zinterstore 命令計(jì)算給定的一個(gè)或多個(gè)有序集的交集并將結(jié)果集存儲在新的有序集合 key 中
    Redis Zlexcount 命令在有序集合中計(jì)算指定字典區(qū)間內(nèi)成員數(shù)量
    Redis Zrange 命令通過索引區(qū)間返回有序集合成指定區(qū)間內(nèi)的成員
    Redis Zrangebylex 命令通過字典區(qū)間返回有序集合的成員
    Redis Zrangebyscore 命令通過分?jǐn)?shù)返回有序集合指定區(qū)間內(nèi)的成員
    Redis Zrank 命令返回有序集合中指定成員的索引
    Redis Zrem 命令移除有序集合中的一個(gè)或多個(gè)成員
    Redis Zremrangebylex 命令移除有序集合中給定的字典區(qū)間的所有成員
    Redis Zremrangebyrank 命令移除有序集合中給定的排名區(qū)間的所有成員
    Redis Zremrangebyscore 命令移除有序集合中給定的分?jǐn)?shù)區(qū)間的所有成員
    Redis Zrevrange 命令返回有序集中指定區(qū)間內(nèi)的成員,通過索引,分?jǐn)?shù)從高到底
    Redis Zrevrangebyscore 命令返回有序集中指定分?jǐn)?shù)區(qū)間內(nèi)的成員,分?jǐn)?shù)從高到低排序
    Redis Zrevrank 命令返回有序集合中指定成員的排名,有序集成員按分?jǐn)?shù)值遞減(從大到小)排序
    Redis Zscore 命令返回有序集中,成員的分?jǐn)?shù)值
    Redis Zunionstore 命令計(jì)算給定的一個(gè)或多個(gè)有序集的并集,并存儲在新的 key 中
    Redis Zscan 命令迭代有序集合中的元素(包括元素成員和元素分值)

    示例代碼如下:

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    # __author__ = 'Jack'
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    r.flushall() # 清空Redis
    
    r.zadd('z1', '11', 1, '22', 2, '33', 3, '44', 4, '55', 5, '66', 6, '66', 7) # 在name對應(yīng)的有序集合中添加元素
    print(r.zcard('z1')) # 獲取name對應(yīng)的有序集合元素的數(shù)量
    print(r.zcount('z1', 1, 2)) # 獲取name對應(yīng)的有序集合中分?jǐn)?shù) 在 [min,max] 之間的個(gè)數(shù)
    r.zincrby('z1', '11', amount=5) # 自增name對應(yīng)的有序集合的 name 對應(yīng)的分?jǐn)?shù)
    print(r.zrange('z1', 0, -1, desc=False, withscores=True)) # 值11被排序到最后;此處表示按元素的值升序排列
    
    print(r.zrank('z1', 33)) # 獲取某個(gè)值在 name對應(yīng)的有序集合中的排行(從 0 開始)
    
    r.zrem('z1', '66') # 刪除name對應(yīng)的有序集合中值是values的成員
    print(r.zrange('z1', 0, -1, desc=False, withscores=True))
    
    r.zremrangebyrank('z1', 0, 1) # 根據(jù)排行范圍刪除
    print(r.zrange('z1', 0, -1, desc=False, withscores=True))
    
    r.zremrangebyscore('z1', 4.5, 5.5) # 根據(jù)分?jǐn)?shù)范圍刪除
    print(r.zrange('z1', 0, -1, desc=False, withscores=True))
    
    print(r.zscore('z1', 11)) # 獲取name對應(yīng)有序集合中 value 對應(yīng)的分?jǐn)?shù)
    
    r.zadd("zset_name", "a1", 6, "a2", 2, "a3", 5)
    r.zadd('zset_name1', a1=7, b1=10, b2=5)
    '''
     獲取兩個(gè)有序集合的交集并放入dest集合,如果遇到相同值不同分?jǐn)?shù),則按照aggregate進(jìn)行操作
     aggregate的值為: SUM MIN MAX
    '''
    r.zinterstore('zset_name2', ('zset_name', 'zset_name1'), aggregate='Sum')
    
    print(r.zrange('zset_name2', 0, -1, desc=False, withscores=True))

    輸出結(jié)果如下:

    6
    2
    [(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0), (b'66', 6.0)]
    1
    [(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]
    [(b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]
    [(b'44', 4.0), (b'11', 6.0)]
    6.0
    [(b'a1', 13.0)]

    五、哈希 hashes

    Redis 數(shù)據(jù)庫hash數(shù)據(jù)類型是一個(gè)string類型的key和value的映射表,適用于存儲對象。redis 中每個(gè)hash可以存儲鍵值對多達(dá)40億。Python的redis模塊實(shí)現(xiàn)了Redis哈希(Hash)命令行操作的幾乎全部命令,包括HDEL、HEXISTS、HGET、HGETALL、HINCRBY、HKEYS、HLEN 、HMGET 、HMSET 、HSET 、HSETNX 、HVALS 、HINCRBYFLOAT等命令。函數(shù)說明如下:

    1. HDEL:刪除對應(yīng)哈希(Hash)表的指定鍵(key)的字段,hdel(self, name, key)

    2. HEXISTS:檢測哈希(Hash)表對應(yīng)鍵(key)字段是否存在,返回布爾邏輯,hexists(self, name, key)

    3. HGET:獲取哈希(Hash)指定鍵(key)對應(yīng)的值,hget(self, name, key)

    4. HGETALL:獲取哈希(Hash)表的鍵-值對(key-value pairs),返回python字典類型數(shù)據(jù),hgetall(self, name)

    5. HINCRBY:為哈希表(Hash)指定鍵(key)對應(yīng)的值(key)加上指定的整數(shù)數(shù)值(int,可為負(fù)值)hincrby(self>, name, key, amount=1),Redis 中本操作的值被限制在 64 位(bit)有符號數(shù)字。

    6. HKEYS:返回哈希表(Hash)對應(yīng)鍵(key)的數(shù)組(Python稱之為列表List),hkeys(self, name)

    7. HLEN: 獲取哈希表(Hash)中鍵-值對(key-value pairs)個(gè)數(shù),hlen(self, name)

    8. HMGET:獲取哈希表(Hash)中一個(gè)或多個(gè)給點(diǎn)字段的值,不存在返回nil(Redis命令行)/None(Python),hmget(self, name, keys),其中keys可以為列表(list)

    9. HMSET:設(shè)置對個(gè)鍵-值對(key-value pairs)到哈希表(Hash)中,python輸入值(mapping)為字典(dictionary)類型,hmset(self, name, mapping)

    10. HSET:為哈希表(Hash)賦值,若鍵(key)存在值(value)則覆蓋,不存在則創(chuàng)建,hset(self, name, key, value)

    11. HSETNX:為哈希表(Hash)不存值(value)的鍵(key)賦值,存在操作無效,對應(yīng)值(value)無變化,hsetnx(self, name, key, value)

    12. HVALS:返回哈希表(Hash)對應(yīng)值(value)的列表,hvals(self, name)

    13. HINCRBYFLOAT:為哈希表 key 中的指定字段的浮點(diǎn)數(shù)值加上增量 increment ,hincrbyfloat(self, name, key, amount=1.0)

    示例代碼如下:

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    # __author__ = 'Jack'
    
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    r = redis.Redis(connection_pool=pool)
    r.flushall() # 清空Redis
    
    r.hset('n1', 'k1', 'v1') # hset(name, key, value),name對應(yīng)的hash中設(shè)置一個(gè)鍵值對(不存在,則創(chuàng)建;否則,修改)
    print(r.hget('n1', 'k1'))
    r.hmset('n2', {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}) # hmset(name, mapping),在name對應(yīng)的hash中批量設(shè)置鍵值對
    print(r.hmget('n2', 'k2'))
    print(r.hgetall('n2')) # 獲取name對應(yīng)hash的所有鍵值
    print(r.hlen('n2')) # 獲取name對應(yīng)的hash中鍵值對的個(gè)數(shù)
    print(r.hkeys('n2')) # 獲取name對應(yīng)的hash中所有的key的值
    print(r.hvals('n2')) # 獲取name對應(yīng)的hash中所有的value的值
    print(r.hexists('n2', 'k4')) # 檢查name對應(yīng)的hash是否存在當(dāng)前傳入的key
    r.hdel('n2', 'k3') # 將name對應(yīng)的hash中指定key的鍵值對刪除
    r.hset('n3', 'k1', 1)
    r.hincrby('n3', 'k1', amount=1) # hincrby(name, key, amount=1),自增name對應(yīng)的hash中的指定key的value的值,不存在則創(chuàng)建key=amount
    print(r.hgetall('n3'))

    輸出結(jié)果如下:

    b'v1'
    [b'v2']
    {b'k1': b'v1', b'k2': b'v2', b'k3': b'v3'}
    3
    [b'k1', b'k2', b'k3']
    [b'v1', b'v2', b'v3']
    False
    {b'k1': b'2'}

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    (收藏)Python操作Redis的全面總結(jié)

    (收藏)Python操作Redis的全面總結(jié):本篇文章給大家?guī)淼膬?nèi)容是關(guān)于(收藏)Python操作Redis的全面總結(jié),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對你有所幫助。一、字符串 stringsPython操作Redis的redis模塊對字符串(string)的主要操作函數(shù)包括:SET、GET、GETSET、
    推薦度:
    標(biāo)簽: 收藏 區(qū)塊鏈 linux
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 欧美精品免费观看二区| 日本精品不卡视频| 国产精品久久久久久久久| 久久精品中文字幕有码| 国产精品中文字幕在线观看| 亚洲AV日韩精品久久久久| 国产午夜亚洲精品理论片不卡| 91麻豆精品视频在线观看| 亚洲愉拍99热成人精品热久久 | 99R在线精品视频在线播放| 久久久久人妻精品一区| 无码AV动漫精品一区二区免费| 国产高清在线精品一本大道| 国产精品亚洲片在线va| 2021最新国产精品网站| 国产久热精品无码激情| 老司机性色福利精品视频| 中文字幕av日韩精品一区二区| 欧美人与动牲交a欧美精品| 精品福利一区二区三区精品国产第一国产综合精品 | 国产精品免费AV片在线观看| 亚洲国产精品无码av| 亚洲国产主播精品极品网红| 久久综合精品国产一区二区三区 | 亚洲日本精品一区二区| laowang在线精品视频| 国产精品视频一区二区三区四 | 56prom精品视频在放免费| 国产精品嫩草影院一二三区入口 | 久久精品?ⅴ无码中文字幕| 国产精品无码久久久久| 国产精品成人观看视频网站| 97视频在线精品国自产拍| 亚洲精品免费在线观看| 欧美视频精品一区二区三区| 久久精品男人影院| 无码精品一区二区三区免费视频| 欧美黑人巨大精品| 国产精品99精品视频网站| 亚洲日韩中文在线精品第一 | 国产午夜精品视频|