Python操作Redis大全

来源: 廖高祥 链接:

https://segmentfault.com/a/1190000016696863

一、字符串 strings

Python操作Redis的redis模块对字符串(string)的主要操作函数包括:SET、GET、GETSET、SETEX、SETNX、MSET、MSETNX、INCR(INCRBY,DECR,DECRBY在python中庸同一个函数incr实现)、APPEND、SETRANGE、STRLEN。函数说明如下:

SET: 为指定的键(key)设置值(value), set(self, name, value, **kwargs)。

GET:获取指定键(key)绑定的值(value),get(self, name)。

GETSET:为指定的键(key)设置新的值(value),并返回旧的值(old Value),getset(self, name, value)

SETEX:为指定的键(key)设置过期以秒(second)计的过期时间,setex(self, name, value, time)

SETNX:键(key)不存在时,为键(key)指定值(value),setnx(self, name, value)

MSET:一次性设置多个键-值(key-value)对,函数设置的键-值对(即mapping所指内容)数据要以Python字典数据类型传入,mset(self, mapping)

MSETNX:键-值(key-value)对不存在时,设置键-值(key-value)对,msetnx(self, mapping),mapping值参考6

INCR:自增函数,默认步长为1,通过对步长(amount)大小以及字符的控制实现了INCRBY(amount>=1)、DECR(amount=-1)、DECRBY(amount

APPEND:为指定的字符串追加值,若不存在则直接创建,append(self, key, value)

SETRANGE:用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始,setrange(self, name, offset, value)

STRLEN:返回字符串的长度,当name不存在时返回0,strlen(self, name)

示例代码如下:

输出结果如下:

二、列表 lists

Python操作Redis主要利用了redis模块来实现,list表操作函数主要模拟了Redis操作命令LPUSH,LRANGE,LINDEX,BLPOP,BRPOP。函数说明如下:

lpush函数实现了从向指定redis列表头部压入数据功能,

lrange获取列表指定范围的函数,

lindex根据列表下标量获取列表元素值,

blpop从列表头部取出第一个元素,返回该元素值并从列表删除(l代表left,左边)

brpop从列表尾部取出第一个元素,返回该元素值并从列表删除(r代表right,右边)

LPUSHX、RPUSHX以及其他一些Redis列表(List)函数目前版本无法实现,如有可实现方法博客代码事例将会得到更新。

示例代码如下:

输出结果如下:

三、集合 sets

Redis 数据库集合对象(set object)是由string类型的无重复元素的无需集合,底层编码可以是intset或者hashtable。intset编码的集合对象用整数集合最为底层实现,所有对象元素保存在整数集合中。Python的redis模块实现了 SADD、SCARD 、SDIFF 、SDIFFSTORE、SINTER 、SINTERSTORE、SISMEMBER 、SMEMBERS 、SMOVE、SPOP、SRANDMEMBER、SREM、SUNION、SUNIONSTORE操作命令的基本用法。函数说明如下:

SADD:向集合对象添加成员,sadd(self, name, value)

SCARD:获取集合元素个数,scard(self, name)

SDIFF:返回给定多个集合对象的差集(set key1-set key2..-set keyn),从左到右计算集合差集,sdiff(self, keys, *args)

SDIFFSTORE:返回给定给定多个集合对象的差集并存储在目标(dest)集合中,sdiffstore(self, dest, keys, *args)

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

SINTERSTORE:返回给定所有集合(keys,args)的交集并存储在 集合(dest) 中, sinterstore(self, dest, keys,args)

SISMEMBER:判断 value元素是否是集合 name 的成员,返回布尔逻辑值True或者False,sismember(self, name, value)

SMEMBERS:返回集合中所元素值的Python集合类型数据,smembers(self, name)

SMOVE:将元素value从集合src移动到 集合 dest。若元素value在集合src中不存在,则集合dest中不会添加元素value, smove(self, src, dest, value)

SPOP:移除并返回集合中的一个随机元素, spop(self, name)

SRANDMEMBER:返回集合中一个随机数,但是不做移除操作, srandmember(self, name)。从Redis 2.6 版本开始, 在命令行下Srandmember 命令接受可选返回元素数量的参数 redis>SRANDMEMBER name count

SREM:移除集合中一个元素,srem(self, name, value),redis模块任然沿用Redis 2.4 版本以前的只接受单个元素的用法。

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

SUNIONSTORE:所有给定集合的并集存储在集合dest 中, sunionstore(self, dest, keys, *args)

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

示例代码如下:

输出结果如下:

四、有序集合 sorted sets

示例代码如下:

输出结果如下:

五、哈希 hashes

Redis 数据库hash数据类型是一个string类型的key和value的映射表,适用于存储对象。redis 中每个hash可以存储键值对多达40亿。Python的redis模块实现了Redis哈希(Hash)命令行操作的几乎全部命令,包括HDEL、HEXISTS、HGET、HGETALL、HINCRBY、HKEYS、HLEN 、HMGET 、HMSET 、HSET 、HSETNX 、HVALS 、HINCRBYFLOAT等命令。函数说明如下:

HDEL:删除对应哈希(Hash)表的指定键(key)的字段,hdel(self, name, key)

HEXISTS:检测哈希(Hash)表对应键(key)字段是否存在,返回布尔逻辑,hexists(self, name, key)

HGET:获取哈希(Hash)指定键(key)对应的值,hget(self, name, key)

HGETALL:获取哈希(Hash)表的键-值对(key-value pairs),返回python字典类型数据,hgetall(self, name)

HINCRBY:为哈希表(Hash)指定键(key)对应的值(key)加上指定的整数数值(int,可为负值)hincrby(self>, name, key, amount=1),Redis 中本操作的值被限制在 64 位(bit)有符号数字。

HKEYS:返回哈希表(Hash)对应键(key)的数组(Python称之为列表List),hkeys(self, name)

HLEN: 获取哈希表(Hash)中键-值对(key-value pairs)个数,hlen(self, name)

HMGET:获取哈希表(Hash)中一个或多个给点字段的值,不存在返回nil(Redis命令行)/None(Python),hmget(self, name, keys),其中keys可以为列表(list)

HMSET:设置对个键-值对(key-value pairs)到哈希表(Hash)中,python输入值(mapping)为字典(dictionary)类型,hmset(self, name, mapping)

HSET:为哈希表(Hash)赋值,若键(key)存在值(value)则覆盖,不存在则创建,hset(self, name, key, value)

HSETNX:为哈希表(Hash)不存值(value)的键(key)赋值,存在操作无效,对应值(value)无变化,hsetnx(self, name, key, value)

HVALS:返回哈希表(Hash)对应值(value)的列表,hvals(self, name)

HINCRBYFLOAT:为哈希表 key 中的指定字段的浮点数值加上增量 increment ,hincrbyfloat(self, name, key, amount=1.0)

示例代码如下:

输出结果如下:

命令太多记不住可以参考Redis中文网,强烈建议收藏

http://www.redis.net.cn/order/

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181028B0ASEP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券