自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python操作Redis大全

開發(fā) 后端 其他數(shù)據(jù)庫(kù) Redis
Python操作Redis主要利用了redis模塊來(lái)實(shí)現(xiàn),list表操作函數(shù)主要模擬了Redis操作命令LPUSH,LRANGE,LINDEX,BLPOP,BRPOP。

[[348737]]

一、字符串 strings

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

    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è)置過(guò)期以秒(second)計(jì)的過(guò)期時(shí)間,setex(self, name, value, time)

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

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

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

    8.  INCR:自增函數(shù),默認(rèn)步長(zhǎng)為1,通過(guò)對(duì)步長(zhǎng)(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 所儲(chǔ)存的字符串值,從偏移量 offset 開始,setrange(self, name, offset, value)

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

示例代碼如下: 

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

輸出結(jié)果如下: 

  1. [b'v1', b'v2', b'v3', None]  
  2. b'liaogx' 
  3. b'li'  
  4. b'LIAOgaoxiang' 
  5. b'LIAOgaoxiang'  
  6. b'LIAOgaoxiang'  
  7. b'LIAOgaoxiang'  
  8. b'goo'  
  9.  
  10.  
  11. b'10'  
  12. b'10111' 

二、列表 lists

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

  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è)元素,返回該元素值并從列表刪除(r代表right,右邊)
  6.  LPUSHX、RPUSHX以及其他一些Redis列表(List)函數(shù)目前版本無(wú)法實(shí)現(xiàn),如有可實(shí)現(xiàn)方法博客代碼事例將會(huì)得到更新。

示例代碼如下: 

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

輸出結(jié)果如下: 

  1.  
  2. [b'0', b'88', b'11']  
  3. [b'0', b'11']  
  4. b'0'  
  5. b'11'  
  6. [b'22', b'33', b'44']  
  7. [b'44', b'22', b'33']  
  8. [b'33', b'44', b'22']  
  9. (b'l1', b'33')  
  10. [b'44', b'22']  
  11. 自定義增量迭代:  
  12. b'11'  
  13. b'22'  
  14. b'33'  
  15. b'44'  
  16. b'55' 

三、集合 sets

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

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

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

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

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

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

    6.  SINTERSTORE:返回給定所有集合(keys, args)的交集并存儲(chǔ)在 集合(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移動(dòng)到 集合 dest。若元素value在集合src中不存在,則集合dest中不會(huì)添加元素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:所有給定集合的并集存儲(chǔ)在集合dest 中, sunionstore(self, dest, keys, *args)

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

示例代碼如下: 

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

輸出結(jié)果如下: 

  1.  
  2. {b'v3', b'v1'}  
  3. {b'v3', b'v1'}  
  4. {b'v2'}  
  5. {b'v2'}  
  6. {b'v3', b'v2', b'v4', b'v1'}  
  7. {b'v3', b'v2', b'v4', b'v1'}  
  8. False  
  9. {b'v3', b'v2', b'v4', b'v1'}  
  10. b'v2'  
  11. b'v3' 

四、有序集合 sorted sets

命令 描述
Redis Zadd 命令 向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù)
Redis Zcard 命令 獲取有序集合的成員數(shù)
Redis Zcount 命令 計(jì)算在有序集合中指定區(qū)間分?jǐn)?shù)的成員數(shù)
Redis Zincrby 命令 有序集合中對(duì)指定成員的分?jǐn)?shù)加上增量 increment
Redis Zinterstore 命令 計(jì)算給定的一個(gè)或多個(gè)有序集的交集并將結(jié)果集存儲(chǔ)在新的有序集合 key 中
Redis Zlexcount 命令 在有序集合中計(jì)算指定字典區(qū)間內(nèi)成員數(shù)量
Redis Zrange 命令 通過(guò)索引區(qū)間返回有序集合成指定區(qū)間內(nèi)的成員
Redis Zrangebylex 命令 通過(guò)字典區(qū)間返回有序集合的成員
Redis Zrangebyscore 命令 通過(guò)分?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)的成員,通過(guò)索引,分?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è)有序集的并集,并存儲(chǔ)在新的 key 中
Redis Zscan 命令 迭代有序集合中的元素(包括元素成員和元素分值)

示例代碼如下: 

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

輸出結(jié)果如下: 

  1.  
  2.  
  3. [(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0), (b'66', 6.0)]  
  4.  
  5. [(b'22', 2.0), (b'33', 3.0), (b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]  
  6. [(b'44', 4.0), (b'55', 5.0), (b'11', 6.0)]  
  7. [(b'44', 4.0), (b'11', 6.0)]  
  8. 6.0  
  9. [(b'a1', 13.0)] 

五、哈希 hashes

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

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

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

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

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

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

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

    7.  HLEN:獲取哈希表(Hash)中鍵-值對(duì)(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è)置對(duì)個(gè)鍵-值對(duì)(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)賦值,存在操作無(wú)效,對(duì)應(yīng)值(value)無(wú)變化,hsetnx(self, name, key, value)

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

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

示例代碼如下: 

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

輸出結(jié)果如下: 

  1. b'v1'  
  2. [b'v2']  
  3. {b'k1': b'v1', b'k2': b'v2', b'k3': b'v3'}  
  4.  
  5. [b'k1', b'k2', b'k3']  
  6. [b'v1', b'v2', b'v3']  
  7. False  
  8. {b'k1': b'2'}  

 

責(zé)任編輯:龐桂玉 來(lái)源: 馬哥Linux運(yùn)維
相關(guān)推薦

2010-07-19 11:00:24

Perl操作符

2011-01-20 10:57:46

Postfix

2024-02-20 08:25:41

Redis內(nèi)存數(shù)據(jù)庫(kù)Python

2016-06-14 14:50:17

Python性能

2018-10-31 11:30:28

Redis數(shù)據(jù)分布式鎖

2018-12-29 15:50:06

Python基礎(chǔ)知識(shí)編程語(yǔ)言

2019-02-21 15:01:45

PythonWeb部署

2022-09-02 14:56:24

Python界面開發(fā)庫(kù)框架

2024-05-16 12:51:15

WinForms線程UI

2009-08-10 18:05:19

C#數(shù)據(jù)庫(kù)查詢

2018-11-09 10:37:29

Redis面試存儲(chǔ)

2023-02-26 23:41:37

2022-03-22 10:52:02

Redis變慢服務(wù)器

2023-11-06 16:08:24

JavaList開發(fā)

2010-05-20 12:31:37

MyEclipse6.

2017-12-26 15:10:30

數(shù)據(jù)庫(kù)Oracle操作語(yǔ)句

2011-01-14 08:46:01

2023-02-24 07:40:11

2010-06-01 13:20:45

2021-01-27 11:34:19

Python正則表達(dá)式字符串
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)