Python redis的操作方法有哪些
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,今天小编给大家分享一下Python redis的操作方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下
千家信息网最后更新 2025年02月23日Python redis的操作方法有哪些
今天小编给大家分享一下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 1 BITCOUNT 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.0 | 4.0 | 6.0 | 8.0 | 10.0 |
---|---|---|---|---|---|
元素 | 西瓜 | 葡萄 | 芒果 | 香蕉 | 苹果 |
一个保存了员工薪水的有序集合
分值 | 6000 | 8000 | 10000 | 12000 | |
---|---|---|---|---|---|
元素 | lucy | tom | jim | jack |
一个保存了正在阅读某些技术书的人数
分值 | 300 | 400 | 555 | 666 | 777 |
---|---|---|---|---|---|
元素 | 核心编程 | 阿凡提 | 本拉登 | 阿姆斯特朗 | 比尔盖茨 |
有序集合常用命令
# 在有序集合中添加一个成员 返回值为 成功插入到集合中的元素个数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# 6000python操作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的操作方法有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
元素
用户
字段
类型
数据
武将
文臣
分值
统计
有序
个数
字符
字符串
属性
命令
成员
权重
示例
区间
多个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库 求一列最小值
地平线 服务器
幻塔应该选啥服务器
原神国内是什么服务器
关系模型对数据库设计有何作用
网络安全行业人才分布
数据库数据在后台显示
人社网络安全和信息化
黑莓9930服务器证书过期
深圳市畅享智联网络技术
数据库原理及设计答案
宝鸡市高新医院数据库管理
32g 内存 服务器
企业做服务器代理需要哪些资质
西藏人口数据库下载
会所扫码点餐机软件开发
网络转网络安全
nacos数据库如何升级
天使之战服务器开服时间
宿城区什么是网络技术大概费用
服务器测试经理薪水
2018网络安全展板内容
数据库映射和匹配
如何将应用迁移到另一台服务器上
软件开发可以到北大青鸟吗
关于网络安全的海草舞
智能门镜服务器没有信号
华为手机搭建服务器
会所扫码点餐机软件开发
益阳正规软件开发中介