Python操作Redis之有序集合

有序集合,顾名思义,这里存储的数据是有序的,这样,用处可就大了,例如你玩游戏时的各项指标排名,如果是传统的关系型数据库,面对百万级别的数据,是很难处理好的,但使用Reids,则可以简单高效的完成这些工作。


# coding=utf-8
'''
Created on 2015-9-18

@author: Administrator
'''
import redis
from idlelib.IOBinding import encoding
from pip.utils import Inf
pool=redis.ConnectionPool(host='192.168.1.106',port=6379,db=0)
r = redis.StrictRedis(connection_pool=pool)
#我们先加入5条数据
p = r.pipeline()
p.zadd('score',90.9,'peter',95,'white',80,'black',70,'tom',100,'sheng')
p.execute()

#接下来,我们查询一个人的分数,注意,我们存储的时候写入的整数
#其实redis里存储的也是整数,但python取出来后就变成了float
print r.zscore('score', 'peter')

'''
下面两个函数返回相同的结果,但使用方式是不一样的
zrange 的第2个和第3个参数表示第几行到第几行,zrangebyscore 的第2个和第3个表示从哪个分数范围内
取值,第4个参数表示从第几行开始取,第5个参数表示取几个值回来
zrange的第四个参数表示降序还是升序
最后一个参数为True表示带分数返回,其实最后面还可以写一个参数,用来处理返回的分数,例如,intern
这原本是一个函数,可以放到最后,如果不写,就默认是用float
除了这两个函数外,还有zrevrange 和  zrevrangebyscore 这个一看名称就能知道是做什么用的了
'''
print r.zrange('score', 0, 2, False, True)
print r.zrangebyscore('score', 0, 100, 0, 3, True)

#如果想获得全部的分数呢,0 到-1就可以了
print r.zrange('score', 0, -1, False, True)

#想获得分数高于80分(等于也行)的从小到达排序的前三名,有点绕。。。
print r.zrangebyscore('score', 80, Inf, 0, 3, True)

#小于某个分数值的表示方法,float('-Inf')表示无穷小
print r.zrangebyscore('score', float('-Inf'), 95, 0, 4, True)

#现在给某个值加1
print r.zincrby('score', 'peter',1)

#获得一个有序集合的元素的个数
print r.zcard('score')

#既然是有序,我们最希望能看到一个元素的分数排名
print '排名'
print r.zrank('score', 'black')
print r.zrevrank('score', 'black')

#获得一个分数范围内的元素的个数
print r.zcount('score', 78, 93)

#删除掉一个元素
print r.zrem('socre','peter')

#按分数区间进行删除
print r.zremrangebyscore('score', 70, 90)

#分数从小到达排序,然后删除指定排名范围内的数据
print r.zremrangebyrank('score', 0, 2)


  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python可以使用redis-py库和pymongo库来操作Redis和MongoDB。 要使用Redis作为缓存,可以使用redis-py库。首先需要安装redis-py库,然后在Python代码中导入redis模块。接下来,可以使用redis模块的相关方法来与Redis进行交互。例如,可以使用set方法将数据缓存到Redis中,使用get方法从Redis中获取数据。此外,还可以使用expire方法为缓存设置过期时间,使用delete方法从Redis中删除缓存等。 要使用MongoDB作为主数据库,可以使用pymongo库。首先需要安装pymongo库,然后在Python代码中导入pymongo模块。接下来,可以使用pymongo模块的相关方法来与MongoDB进行交互。例如,可以使用insert_one或insert_many方法将数据插入到MongoDB中,使用find方法查询数据,使用update_one或update_many方法更新数据,使用delete_one或delete_many方法删除数据等。 在使用Redis和MongoDB的组合方式中,可以将经常被访问的数据缓存到Redis中,从而提高访问速度。当需要获取数据时,首先尝试从Redis中获取,如果不存在则从MongoDB中获取,并将获取的数据缓存到Redis中。同时,还可以通过设置合适的过期时间,以保证缓存的数据不会过时。 需要注意的是,在将数据缓存到Redis中时,应该根据实际需求选择适当的数据结构(如字符串、哈希、列表、有序集合等),以满足不同的缓存需求。在使用MongoDB作为主数据库时,需要根据实际情况设计合理的数据模型和索引,以支持高效的数据存储和查询操作。 总之,通过使用Python操作redis和mongodb,结合redis作为缓存,mongodb作为主数据库,可以提高数据的读写效率和性能,并实现灵活可扩展的数据存储方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值