python redis应用(根据值过滤查询)

1.连接

import redis
r = redis.Redis(host="xx.xxx.xxx.xx", port=xxxx, db=0, decode_responses=True)
client = r.ft("xxx") #自己index的名称

2.查询

from redis.commands.search.query import Query
#1.以查询name为小红为例
query_filter = "@name:小红"
#query情况下,return_fileds中的值除id外,其他必须为index索引中的键名
query = Query(query_filter).return_fields("id","name")
result = client.search(query).docs
#2.以查询全部数据为例
#query_filter = "*" #表示查询所有数据,但默认Query返回的数量最多为10,可设置num的值进行全量返回
#query_num = 700 #例库中有700条数据,就设置为700
for i in result:
	id = i.id
	name = i.name
print(id,name)

query_filter的各种情况写法,根据值匹配

库中存储的数据举例:
name:小红,sex:女,like:放风筝,key:踢毽子
name:小蓝,sex:男,like:篮球,key:唱歌
name:张蓝,sex:男,like:唱歌,key:乒乓球

  1. 键之间的“与” &
    “*”是通配符,代表0/n个字符
#name是“小”开头的,并且sex是女性
query_filter="(@name:小\*)&(@sex:女*)"
  1. 键之间的“或” |
#查询喜欢唱歌的。假设like和key属于相似键,且值可能出现重复。
query_filter="(@like:唱歌)|(@key:唱歌)"
  1. 值之间的“或” |
#查询叫小红或者小蓝的
query_filter="(@name:小红|小蓝)"

4.混合使用

#查询小红或小蓝中喜欢打球的
query_filter="(@name:小红|小蓝)&((@like:*球*)|(@key:*球*))"

3.统计

req = AggregateRequest(query_filter).group_by("@name", reducers.count())
res = client.aggregate(req).rows
Python RedisBloom是一个用于在Redis中实现布隆过滤器的Python库。这个库提供了一种简洁而高效的方法来过滤重复的数据或判断元素是否存在。通过使用Redis自带的setbit方法和多个哈希函数,Python RedisBloom可以将字符串映射到不同的比特位,并在查询时判断相应的比特位上的来确定元素是否存在。 一个使用Python RedisBloom的示例是,可以创建一个ReBloomFilter类来封装操作Redis中的布隆过滤器。在初始化时,可以传入一个哈希列表和容量参数,然后在exists方法中使用哈希列表对元素进行判断,如果任何一个哈希函数返回False,说明元素不存在。而在add方法中,可以使用哈希列表对元素进行哈希并在Redis中设置相应的比特位为1来表示元素的存在。 另外,Python RedisBloom在处理大量数据时也非常适用,因为它可以将数据分散在多个比特位上,从而减少内存占用。这对于爬虫等需要处理大量数据的应用非常有帮助。 总之,Python RedisBloom是一个方便而高效的Python库,可以实现布隆过滤器功能,并且在处理大量数据时更加节省内存。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [pythonRedis实现简单布隆过滤器 BloomFilter](https://blog.csdn.net/milanla/article/details/119814700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [xml文件批量处理python脚本](https://download.csdn.net/download/caoxinri123/88239057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [[Python3.4]通过Redis利用BloomFilter实现数据去重](https://blog.csdn.net/u014595019/article/details/50324167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值