iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python redis的操作方法有哪些
  • 443
分享到

Python redis的操作方法有哪些

2023-06-05 15:06:19 443人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下python redis的操作方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。位图操作bitm

今天小编给大家分享一下python redis的操作方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

位图操作bitmap

定义

1、位图不是真正的数据类型,它是定义在字符串类型中2、一个字符串类型的值最多能存储512M字节的内容,位上限:2^32# 1MB = 1024KB# 1KB = 1024Byte(字节)# 1Byte = 8bit(位)

强势点

可以实时的进行统计,极其节省空间。官方在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户数”的时间消耗小于50ms, 占用16MB内存

SETBIT 命令

  • 说明:设置某位置上的二进制值

  • 语法:SETBIT key offset value

  • 参数:offset - 偏移量 从0开始

    value - 0或者1

  • 示例:

# 默认扩展位以0填充127.0.0.1:6379> SET mykey abOK127.0.0.1:6379> GET mykey"ab"127.0.0.1:6379> SETBIT mykey 0 1(integer) 0127.0.0.1:6379> GET mykey"\xe1b"127.0.0.1:6379>

GETBIT 命令

  • 说明:获取某一位上的值

  • 语法:GETBIT key offset

  • 示例:

127.0.0.1:6379> GETBIT mykey 3(integer) 0127.0.0.1:6379> GETBIT mykey 0(integer) 1127.0.0.1:6379>

BITCOUNT 命令

  • 说明:统计键所对应的值中有多少个 1

  • 语法:BITCOUNT key start end

  • 参数:start/end 代表的是 字节索引

  • 示例:

127.0.0.1:6379> SET mykey1 abOK127.0.0.1:6379[4]> BITCOUNT mykey(integer) 6127.0.0.1:6379[4]> BITCOUNT mykey 0 0(integer) 3

应用场景案例

# 网站用户的上线次数统计(寻找活跃用户)用户名为key,上线的天作为offset,上线设置为1# 示例用户名为 user1:login 的用户,今年第1天上线,第30天上线SETBIT user1:login 0 1 SETBIT user1:login 29 1BITCOUNT user1:login

Hash散列数据类型

  • 定义

1、由field和关联的value组成的键值对2、field和value是字符串类型3、一个hash中最多包含2^32-1个键值对
  • 优点

1、节约内存空间 - 特定条件下 【1,字段小于512个,2:value不能超过64字节】2、可按需获取字段的值
  • 缺点(不适合hash情况)

1,使用过期键功能:键过期功能只能对键进行过期操作,而不能对散列的字段进行过期操作2,存储消耗大于字符串结构
  • 基本命令操作

# 1、设置单个字段HSET key field valueHSETNX key field value# 2、设置多个字段HMSET key field value field value# 3、返回字段个数HLEN key# 4、判断字段是否存在(不存在返回0)HEXISTS key field# 5、返回字段值HGET key field# 6、返回多个字段值HMGET key field filed# 7、返回所有的键值对HGETALL key# 8、返回所有字段名HKEYS key# 9、返回所有值HVALS key# 10、删除指定字段HDEL key field # 11、在字段对应值上进行整数增量运算HINCRBY key field increment# 12、在字段对应值上进行浮点数增量运算HINCRBYFLOAT key field increment

python操作hash

# 1、更新一条数据的属性,没有则新建hset(name, key, value) # 2、读取这条数据的指定属性, 返回字符串类型hget(name, key)# 3、批量更新数据(没有则新建)属性,参数为字典hmset(name, mapping)# 4、批量读取数据(没有则新建)属性hmget(name, keys)# 5、获取这条数据的所有属性和对应的值,返回字典类型hgetall(name)# 6、获取这条数据的所有属性名,返回列表类型hkeys(name)# 7、删除这条数据的指定属性hdel(name, *keys)

应用场景:用户维度数据统计

用户维度统计   统计数包括:关注数、粉丝数、喜欢商品数、发帖数   用户为key,不同维度为field,value为统计数   比如关注了5人 HSET user:10000 fans 5 HINCRBY user:10000 fans 1

python操作hash

import Redis# 创建redis数据库的连接对象r = redis.Redis(passWord='123456')# 操作hashr.hset('pyhk1', 'username', 'aid2102')r.hmset('pyhk1', {'age': 18, 'major': 'Python'})print(r.hget('pyhk1', 'username').decode())print(r.hmget('pyhk1', ['username', 'age']))print(r.hgetall('pyhk1'))# 字典推导式data = {k.decode(): v.decode() for k, v in r.hgetall('pyhk1').items()}print(data)r.hdel('pyhk1','age')print(r.hgetall('pyhk1'))# 删除键r.delete('pyhk1')

集合数据类型(set)

  • 特点

1、无序、去重2、元素是字符串类型3、最多包含2^32-1个元素
  • 基本命令

# 1、增加一个或者多个元素,自动去重;返回值为成功插入到集合的元素个数SADD key member1 member2# 2、查看集合中所有元素SMEMBERS key# 3、删除一个或者多个元素,元素不存在自动忽略SREM key member1 member2# 4、元素是否存在SISMEMBER key member# 5、随机返回集合中指定个数的元素,默认为1个SRANDMEMBER key [count]# 6、弹出成员SPOP key [count]# 7、返回集合中元素的个数,不会遍历整个集合,只是存储在键当中了SCARD key# 8、把元素从源集合移动到目标集合SMOVE source destination member# 9、差集(number1 1 2 3 number2 1 2 4 结果为3)SDIFF key1 key2 # 10、差集保存到另一个集合中SDIFFSTORE destination key1 key2# 11、交集SINTER key1 key2SINTERSTORE destination key1 key2# 11、并集SUNION key1 key2SUNIONSTORE destination key1 key2

案例: 新浪微博的共同关注

# 需求: 当用户访问另一个用户的时候,会显示出两个用户共同关注过哪些相同的用户# 设计: 将每个用户关注的用户放在集合中,求交集即可# 实现:user001 = {'peiqi','qiaozhi','danni'}user002 = {'peiqi','qiaozhi','lingyang'}  user001和user002的共同关注为:SINTER user001 user002结果为: {'peiqi','qiaozhi'}

python操作set

import redisr = redis.Redis(password='123456')'''   武将: 张飞 许褚 赵云 马超 周瑜   文臣: 诸葛亮 周瑜 司马懿   结果: 1.纯武将 2.纯文臣  3.文武双全  4.文臣武将'''# set集合类型的操作r.sadd('武将', '张飞', '许褚', '赵云', '马超', '周瑜')r.sadd('文臣', '诸葛亮', '周瑜', '司马懿')data1 = r.sdiff('武将', '文臣')result = []for item in data1:    result.append(item.decode())print('纯武将:', result)data2 = r.sdiff('文臣', '武将')result = []for item in data2:    result.append(item.decode())print('纯文臣:', result)data3 = r.sinter('文臣', '武将')result = []for item in data3:    result.append(item.decode())print('文武双全:', result)data4 = r.sunion('文臣', '武将')result = []for item in data4:    result.append(item.decode())print('文臣武将:', result)

有序集合sortedset

  • 特点

1、有序、去重2、元素是字符串类型3、每个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序排列集合中的元素(分值可以相同)4、最多包含2^32-1元素
  • 示例

    一个保存了水果价格的有序集合

分值2.04.06.08.010.0
元素西瓜葡萄芒果香蕉苹果

一个保存了员工薪水的有序集合

分值600080001000012000
元素lucytomjimjack

一个保存了正在阅读某些技术书的人数

分值300400555666777
元素核心编程阿凡提本拉登阿姆斯特朗比尔盖茨
  • 有序集合常用命令

# 在有序集合中添加一个成员 返回值为 成功插入到集合中的元素个数zadd key score member# 查看指定区间元素(升序)zrange key start stop [withscores]# 查看指定区间元素(降序)zrevrange key start stop [withscores]# 查看指定元素的分值zscore key member# 返回指定区间元素# offset : 跳过多少个元素# count : 返回几个# 小括号 : 开区间  zrangebyscore fruits (2.0 8.0zrangebyscore key min max [withscores] [limit offset count]# 每页显示10个成员,显示第5页的成员信息: # limit 40 10# MySQL: 每页显示10条记录,显示第5页的记录# limit 40,10# limit 2,3   显示: 第3 4 5条记录# 删除成员zrem key member# 增加或者减少分值zincrby key increment member# 返回元素排名zrank key member# 返回元素逆序排名zrevrank key member# 删除指定区间内的元素zremrangebyscore key min max# 返回集合中元素个数zcard key# 返回指定范围中元素的个数zcount key min maxzcount salary 6000 8000 zcount salary (6000 8000# 6000<salary<=8000zcount salary (6000 (8000#6000<salary<8000               # 并集zunionstore destination numkeys key [weights 权重值] [AGGREGATE SUM|MIN|MAX]# zunionstore salary3 2 salary salary2 weights 1 0.5 AGGREGATE MAX# 2代表集合数量,weights之后 权重1给salary,权重0.5给salary2集合,算完权重之后执行聚合AGGREGATE                     # 交集:和并集类似,只取相同的元素zinterstore destination numkeys key1 key2 weights weight AGGREGATE SUM(默认)|MIN|MAX

python操作sorted set

import redisr = redis.Redis(password='123456')# 有序集合类型的操作r.zadd('pyzk1', {'tedu': 100, 'tedu2': 200})print(r.zrange('pyzk1', 0, -1, withscores=True))r.zadd('pyzk2', {'tedu2': 200, 'tedu3': 200})# 并集运算r.zunionstore('pyzk3',['pyzk1','pyzk2'],aggregate='sum')print(r.zrange('pyzk3', 0, -1, withscores=True))# 并集运算(带权重)r.zunionstore('pyzk4',{'pyzk1':0.8,'pyzk2':0.2},              aggregate='sum')print(r.zrange('pyzk4', 0, -1, withscores=True))

以上就是“Python redis的操作方法有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: Python redis的操作方法有哪些

本文链接: https://www.lsjlt.com/news/243481.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python操作redis的方法有哪些
    这篇文章主要介绍了python操作redis的方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python操作redis的方法有哪些文章都会有所收获,下面我们一起来看看吧。python 操作redis,...
    99+
    2023-06-05
  • Python redis的操作方法有哪些
    今天小编给大家分享一下Python redis的操作方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。位图操作bitm...
    99+
    2023-06-05
  • php操作redis有哪些的常用方法
    这篇文章主要介绍“php操作redis有哪些的常用方法”,在日常操作中,相信很多人在php操作redis有哪些的常用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php操作redis有哪些的常用方法”的疑...
    99+
    2023-06-20
  • Redis聚合操作的优化方法有哪些
    Redis聚合操作的优化方法有: 使用合适的数据结构:根据需求选择合适的数据结构来存储数据,例如使用有序集合(Sorted Se...
    99+
    2024-05-07
    Redis
  • python列表的操作方法有哪些
    这篇“python列表的操作方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python列表的操作方法有哪些”文章吧...
    99+
    2023-06-30
  • Python字典的操作方法有哪些
    这篇文章主要讲解了“Python字典的操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python字典的操作方法有哪些”吧!Python字典是另一种可变容器模型,且可存储任意类型...
    99+
    2023-07-06
  • redis操作对象的方式有哪些
    Redis操作对象的方式有以下几种:1. RedisClient对象:通过RedisClient对象可以直接连接到Redis服务器,...
    99+
    2023-08-30
    redis
  • Python列表有哪些操作方法
    这篇文章将为大家详细讲解有关Python列表有哪些操作方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、向List中添加元素的方法1.1 Python append()方法添加元素append() 方...
    99+
    2023-06-25
  • Python标准库的操作方法有哪些
    这篇文章主要讲解了“Python标准库的操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python标准库的操作方法有哪些”吧!1、操作系统接口os模块提供了不少与操作系统相关联...
    99+
    2023-06-30
  • Python中json库的操作方法有哪些
    这篇文章主要介绍“Python中json库的操作方法有哪些”,在日常操作中,相信很多人在Python中json库的操作方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中json库的操作方法...
    99+
    2023-07-05
  • Python中的文件操作方法有哪些
    这篇文章主要介绍“Python中的文件操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的文件操作方法有哪些”文章能帮助大家解决问题。一、文件的编码计算机中有许多可用编码:U...
    99+
    2023-07-04
  • Python操作Excel文件的方法有哪些
    本篇内容介绍了“Python操作Excel文件的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!数据处理是 Python 的一大应用...
    99+
    2023-06-16
  • Python中有哪些列表操作方法
    Python中有哪些列表操作方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、append用于在列表末尾追加新的对象a = [1,2,3...
    99+
    2023-06-15
  • python中有哪些文件操作方法
    这篇文章给大家介绍python中有哪些文件操作方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(浮...
    99+
    2023-06-14
  • Python字符串操作方法有哪些
    本篇内容主要讲解“Python字符串操作方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python字符串操作方法有哪些”吧!Python字符串中字符大小写的变换: * S.l...
    99+
    2023-06-17
  • Python关于字典的操作方法有哪些
    这篇文章主要讲解了“Python关于字典的操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python关于字典的操作方法有哪些”吧!初始化# 最常用这种my_objec...
    99+
    2023-07-05
  • python文件处理的操作方法有哪些
    Python文件处理的操作方法有以下几种: 打开文件:使用内置的open()函数来打开一个文件。可以指定文件路径、打开模式(读取、...
    99+
    2024-02-29
    python
  • python操作redis事务的方法
    这篇文章主要讲解了“python操作redis事务的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python操作redis事务的方法”吧!五大数据类型及应用场景类型特点使用场景stri...
    99+
    2023-06-03
  • python文件常用操作方法有哪些
    文件的一般操作步骤打开文件或创建新文件:使用相应的编程语言和对应的库或模块打开一个已经存在的文件或者创建新文件。读取文件内容或向文件中写入内容:通过读取文件内容或向文件中写入内容来实现对文件的操作,可以使用相应的方法和函数来实现。处理文件数...
    99+
    2023-05-20
    Python
  • Redis基本数据类型和操作方法有哪些
    本文小编为大家详细介绍“Redis基本数据类型和操作方法有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis基本数据类型和操作方法有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2022-11-30
    redis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作