Redis-实现简单的条件查询

迪文串口屏开发环境搭建全流程:从DGUS Tool到串口联调 串口屏作为嵌入式人机交互的核心组件,通过串口通信实现主控MCU与显示终端的指令交互。其工作原理基于变量地址映射,主控读写VP地址即可驱动屏上控件,兼具低功耗与高稳定性。在工业控制、医疗设备及智能家居面板等场景中,串口屏能显著降低开发门槛与硬件成本。迪文屏凭借DGUS Tool上位机与自定义串口协议,成为主流选择。掌握DGUS Tool版本匹配、串口驱动安装及VP地址规划,是快速搭建开发环境的关键。 阅读详情

一,导入jar包
在这里插入图片描述

二,实现简单的条件查询
创建一个User实体类

public class User {
    private String id;
    private String name;
    private String sex;
    private int age;
    public String getId() {
        return id;
    }
    public User() {
	super();
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public User(String id, String name, String sex, int age) {
	super();
	this.id = id;
	this.name = name;
	this.sex = sex;
	this.age = age;
    }
    @Override
    public String toString() {
	return "User [id=" + id + ", name=" + name + ", sex=" + sex + ", age="
		+ age + "]";
    }
}

创建5个对象并将其存入缓存中,以便我们进行测试

	//连接redis
	Jedis jedis = new Jedis("127.0.0.1",6379);
	
	Map<String, String> map = new HashMap<String,String>();
	final String USER_TABLE = "USER_TABLE";
	
	//向缓存中存入5条数据组成的map
	String uuid1 = UUID.randomUUID().toString();
	User user1 = new User(uuid1, "y1", "m", 15);
	//将对象转为json
	map.put(uuid1, JSONObject.fromObject(user1).toString());
	
	String uuid2 = UUID.randomUUID().toString();
	User user2 = new User(uuid2, "y2", "m", 18);
	map.put(uuid2, JSONObject.fromObject(user2).toString());
	
	String uuid3 = UUID.randomUUID().toString();
	User user3 = new User(uuid3, "y3", "n", 25);
	map.put(uuid3, JSONObject.fromObject(user3).toString());
	
	String uuid4 = UUID.randomUUID().toString();
	User user4 = new User(uuid4, "y4", "n", 15);
	map.put(uuid4, JSONObject.fromObject(user4).toString());
	
	String uuid5 = UUID.randomUUID().toString();
	User user5 = new User(uuid5, "y5", "m", 25);
	map.put(uuid5, JSONObject.fromObject(user5).toString());
	
	//把map存到缓存中
	jedis.hmset("USER_TABLE", map);

在redis中查询,可以看到已经将5个user对象存到缓存中
在这里插入图片描述

接下来,首先实现单条件的查询,比如说查询年龄为15的user和性别为m的user
由于Redis是nosql,无法直接像mysql那样利用where进行条件查询,所以Redis想实现条件查询,只能用一个笨方法:将所有符合条件的user存到一个set中

Jedis jedis = new Jedis("127.0.0.1",6379);
	Map<String, String> map = new HashMap<String,String>();
	
	final String USER_TABLE = "USER_TABLE";
	//查询年龄为15,性别为n
	
	final String USER_TABLE_AGE_15 = "USER_TABLE_AGE_15";
	final String USER_TABLE_SEX_m = "USER_TABLE_SEX_m";
	final String USER_TABLE_SEX_n = "USER_TABLE_SEX_n";
	
	//向缓存中存入5条数据组成的map
	
	String uuid1 = UUID.randomUUID().toString();
	User user1 = new User(uuid1, "y1", "m", 15);
	//将对象转为json
	map.put(uuid1, JSONObject.fromObject(user1).toString());
	//将符合条件的user的Id存到set中
	jedis.sadd(USER_TABLE_AGE_15,uuid1);
	jedis.sadd(USER_TABLE_SEX_m,uuid1);
	
	String uuid2 = UUID.randomUUID().toString();
	User user2 = new User(uuid2, "y2", "m", 18);
	map.put(uuid2, JSONObject.fromObject(user2).toString());
	jedis.sadd(USER_TABLE_SEX_m,uuid2);
	
	String uuid3 = UUID.randomUUID().toString();
	User user3 = new User(uuid3, "y3", "n", 25);
	map.put(uuid3, JSONObject.fromObject(user3).toString());
	
	String uuid4 = UUID.randomUUID().toString();
	User user4 = new User(uuid4, "y4", "n", 15);
	map.put(uuid4, JSONObject.fromObject(user4).toString());
	jedis.sadd(USER_TABLE_AGE_15,uuid4);
	
	String uuid5 = UUID.randomUUID().toString();
	User user5 = new User(uuid5, "y5", "m", 25);
	map.put(uuid5, JSONObject.fromObject(user5).toString());
	jedis.sadd(USER_TABLE_SEX_m,uuid5);
	
	//把map存到缓存中
	jedis.hmset("USER_TABLE", map);

在这里插入图片描述

那么,如果想要查询年龄为15的user,就需要先从USER_TABLE_AGE_15中取出所有的uuid,然后再从USER_TABLE中取出user

	//获取年龄为15的user的uuid
	Set<String> age = jedis.smembers(USER_TABLE_AGE_15);
	
	//根据uuid获取user
	List<User> userJson = new ArrayList<User>();
	
	for (Iterator iterator = age.iterator(); iterator.hasNext();) {
	    String string = (String) iterator.next();
	    String jsonStr = jedis.hget(USER_TABLE, string);
	    JSONObject json = JSONObject.fromObject(jsonStr);
	    User user = (User) JSONObject.toBean(json, User.class);
	    userJson.add(user);
	    System.out.println(user);
	}

结果如下:

User [id=63a970ec-e997-43e0-8ed9-14c5eb87de8b, name=y1, sex=m, age=15]
User [id=aa074a2a-88d9-4b50-a99f-1375539164f7, name=y4, sex=n, age=15]

那么如果现在需要年龄为15,性别为m的user呢,很简单,获取
USER_TABLE_AGE_15 和 USER_TABLE_SEX_m的并集,再从USER_TABLE中获取.

//获取年龄为15并性别为m的user
	Set<String> userSet = jedis.sinter(USER_TABLE_AGE_15,USER_TABLE_SEX_m);
	List<User> users = new ArrayList<User>();
	for (Iterator iterator = userSet.iterator(); iterator.hasNext();) {
	    String string = (String) iterator.next();
	    String jsonStr = jedis.hget(USER_TABLE, string);
	    JSONObject json = JSONObject.fromObject(jsonStr);
	    User user = (User) JSONObject.toBean(json, User.class);
	    users.add(user);
	    System.out.println(user);
	}
User [id=63a970ec-e997-43e0-8ed9-14c5eb87de8b, name=y1, sex=m, age=15]
Labview数据存储与读取——TDMS文件的创建与写入 Labview数据存储与读取——TDMS文件的创建与写入 你好,这是我在自学Labview编写软件过程中使用的一些功能。我在存储采集卡数据时,通过阅读大量他人的程序,发现TDM及TDMS文件十分适合波形数据的记录,TDMS文件比TDM文件在存储动态类型数据时读写速度更快,而且TDMS 文件没有容量限制,适合存储数据量庞大的测试数据。 前言少叙,书归正传 这一篇博客,说明一下如何使用基本的TDMS功能实现数据文件的存储。 所需要的控件如上图所示,在程序框图——编程——文件I\O——TDMS 中,写入TDMS 阅读详情

相关推荐

解决fetch_california_housing数据集403错误的3种实用方法(附手动下载地址)

本文针对机器学习中常见的fetch_california_housing数据集403 Forbidden错误,提供了三种实用的解决方案。从理解HTTP 403错误的根源出发,详细介绍了修改源码路径、使用国内镜像源以及手动下载并配置数据文件这三种方法,并附带了可靠的手动下载地址,帮助开发者彻底解决数据加载障碍,确保机器学习项目顺利进行。

weixin_29062963的博客 558

Redis存储对象&条件查询(OLTP)

Redis是key-value类型的内存数据库,通过key直接取数据虽然很方便,对于条件查询的支持远不如DB。虽然可以通过LRANGE分页查询加载过滤,但比较麻烦也不够高效,于是通过以下方案简单处理一般情况的条件查询。 思路:通过建立条件索引关联id,再通过id获取实体.。 实体主体 1.value: {key="domain:id:%domainId", value=domain} 优点:方便单独操作,设置过期时间;缺点:数据量较大时通过multiGet效率略低。 2.hash: {key="do

Leonhardt的博客 6185

UE4_UE5 自定义简单水材质(UE材质图表大全1)

首先是材质的颜色节点、粗糙度节点、透明度节点。(1/2/3/4键+右键空白处,可创建一/二/三/四维节点)接着是两个法线波动节点的叠加。最后是折射节点,将fresnel菲涅尔节点连接到材质结果节点的折射输入端。到这里,你基本已经实现了一个波纹流动的水材质。后续我会更新加上海面浪花的水面材质,可以到我的专栏中寻找。有问题随时私信沟通,加油❤。

shanlinhan的博客 1983

java 连接redis 实现简单的查询

1  新建maven项目 添加依赖  &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apac...

Master_chaoAndQi的博客 1991

基于Quartus II软件的FPGA综合实验——多功能数字钟

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、设计要求二、设计原理三、设计过程1.数码管扫描模块2.计时模块3.闹钟模块4.闹钟响铃模块5.数码管显示模块6.整点报时功能7.模式选择模块(计时器主控电路)四、实验中遇到的困难及解决方案五、总结 前言 FPGA综合实验——多功能数字钟 基于Quartus II软件 一、设计要求 设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进.

qq_53022342的博客 2万+

Codex辅助小说创作:零成本AI写作指南与实战技巧

自然语言处理技术通过深度学习模型理解语义上下文,其核心原理是基于大规模文本训练的语言模型预测能力。在创意写作领域,这项技术的价值在于突破传统写作工具的功能局限,实现从内容生成到风格模仿的智能化辅助。特别是提示词工程的应用,让创作者能够精准控制AI输出的内容和风格。在实际应用场景中,AI写作工具显著降低了小说创作门槛,适用于网络小说、奇幻科幻等多种文学类型。本文以OpenAI Codex为例,详细解析如何利用AI技术完成从故事大纲设计、章节生成到平台发布的全流程创作,其中提示词优化和内容质量把控是提升生成效果

weixin_32678995的博客 557

木偶开发日记——Redis实现分页+多条件模糊查询

在写x联帮项目时遇到一个问题:编写获取社团列表接口时,需要加入Redis缓存,但是给分页结果和多条件模糊查询结果添加Reids缓存时应该如何实现呢?于是去搜索了一些实现方案。

m0_56700707的博客 3313

Open3D——RANSAC拟合球面【2026最新版】

RANSAC三维点云球面拟合,博客长期更新,本文最新更新时间为:2026年3月5日。

点云侠的博客 4083

java对redis条件查询,Redis 简单实现sql的条件查询

redis的数据类型String、list、hashmap、set、sortedset等,一般情况不容易实现关系型数据库的灵活的条件查询。简单介绍:把所有的user放入到map中再存入redis中,怎样根据条件查询处user。User:为用户实体类JsonUtil:json和实体类之间的转换TestRedis:redis条件查询测试package com.test.redis;public cla...

weixin_39966225的博客 1764

华为OD机试双机位C卷-恢复数字序列 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 恢复数字序列,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 恢复数字序列。

qq_45776114的博客 1202

手把手教你学Simulink——基于自动驾驶辅助系统的场景实例:车道保持辅助系统(LKA)的仿真与实现

本文通过Simulink实例讲解车道保持辅助系统(LKA)的实现方法。首先介绍LKA从预警到主动控制的技术演进,阐述其系统架构、核心组件和工作原理。重点演示基于自行车模型的车辆横向动力学建模过程,以及使用线性二次调节器(LQR)设计横向控制器的详细步骤。教程包含四个仿真场景测试,分析关键指标如控制精度、舒适性和响应性。最后探讨LKA技术的发展方向,强调人机协同的安全理念。该实例为自动驾驶辅助系统开发提供了完整的Simulink实践方案。

MHD0815的博客 178

Redis实现分页和多条件模糊查询方案

本文将基于Redis提供条件查询+分页的技术解决方案。

XHY的博客 7708

基于YOLOv10的机器人抓取引导系统:从物体检测到精准抓取

python# 数据标注工具简化版import os"""启动标注工具""""""标注单张图像"""print(f"标注图像: {os.path.basename(img_path)}")print("请在图像上绘制抓取矩形框...")# 这里应该实现交互式标注界面# 简化版本直接返回示例标注# 示例标注数据"""保存标注结果"""# 保存为YOLO格式# 转换为YOLO格式。

YOLO 377

redis实现简单的条件查询功能

今天在学习redis的时候,遇到了一个让我很纠结的问题。在sql语句中,条件查询是很简单实现的,比如: select * from books where id = 1这条SQL语句就能够很简单的挑选出来表books里面id等于1的书本的全部信息。但是,redis是非关系型数据库,并不支持这种通过“键值=value”查询数据的方式,那我们究竟该怎样实现类似的条件查询呢? 在登陆注册场景中,我们

路过夏天 4万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

php redis条件查询,redis实现简单的条件查询功能

今天在学习redis的时候,遇到了一个让我很纠结的问题。在sql语句中,条件查询是很简单实现的,比如:select * from books where id = 1复制代码这条SQL语句就能够很简单的挑选出来表books里面id等于1的书本的全部信息。但是,redis是非关系型数据库,并不支持这种通过“键值=value”查询数据的方式,那我们究竟该怎样实现类似的条件查询呢?在登陆注册场景中,我们...

weixin_35322457的博客 1156

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

mysql redis 条件查询数据_redis实现简单的条件查询

一、导入jar包二、实现简单的条件查询创建一个User实体类public class User {private String id;private String name;private String sex;private int age;public String getId() {return id;}public User() {super();}public void setId(St...

weixin_30175731的博客 701

Redis mysql查询结果_redis实现简单的条件查询_数据库,redis

删除索引的sql语句是什么_数据库删除索引的sql语句是:【drop index [indexname] on mytable;】。我们可以使用【alter table tbl_name add index index_name (column_list):】语句添加索引。 一、导入jar包 二、实现简单的条件查询创建一个User实体类public class User {private Stri...

weixin_42097208的博客 834

使用Redis的脚本功能实现Redis中数据简单查询

Redis不仅仅是一个简单的key-value内存数据库,Redis官网对自身的定义是“数据结构服务器”。通过用心设计各种数据结构类型的数据存储,可以实现部分的数据查询功能。因为在Redis的设计中,key是一切,对于Redis是可见的,而value对于Redis来说就是一个字节数组,Redis并不知道你的value中存储的是什么,所以要想实现比如 ‘select * from users wh

kungstriving4的专栏 9412

php redis hash 模糊查询,redis里的hash类型怎么模糊查询value

慕函数4003404Redis不仅仅是一个简单的key-value内存数据库,Redis官网对自身的定义是“数据结构服务器”。通过用心设计各种数据结构类型的数据存储,可以实现部分的数据查询功能。因为在Redis的设计中,key是一切,对于Redis是可见的,而value对于Redis来说就是一个字节数组,Redis并不知道你的value中存储的是什么,所以要想实现比如‘select * from ...

weixin_39660408的博客 653

redis做缓存时,如何实现查询筛选

redis作为NoSQL数据库,经常用作缓存,所以推荐将那些经常查询的数据存入redis中方便下次快速获取。但redis没有像关系型数据库那样拥有结构化的查询语言,如果缓存了很多数据,想从中获取满足某些条件的数据时,该如何做呢? 如果把这些海量数据从redis里拿出来,逐个遍历筛选出满足条件的数据,这肯定不可行! 可以通过在把这些海量数据存入redis时,把满足各种条件的数据的key同时也存入redis的set类型中就可以方便下次根据这些条件查询了。 比如user表的数据经常被

SnailPace的博客 5198

redis计数器怎么实现java

怎样编写程序实现计数器功能 redis 自增计数器 重启会丢失否 使用Redis的脚本功能实现Redis中数据简单查询,有需要的朋友可以参考下。在Redis的设计中,key是一切,对于Redis是可见的,而value对于Redis来说就是一个字节数组,Redis并不知道你的value中存储的是什么 如何用与或非来实现...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 480

Redis作为缓存时的一些使用经验

redis作为NoSQL数据库,经常用作缓存,所以推荐将那些经常查询的数据存入redis中方便下次快速获取。但redis没有像关系型数据库那样拥有结构化的查询语言,如果缓存了很多数据,想从中获取满足某些条件的数据时,该如何做呢? 如果把这些海量数据从redis里拿出来,逐个遍历筛选出满足条件的数据,这肯定不可行! 可以通过在把这些海量数据存入redis时,把...

yjclsx的博客 5885

[Redis笔记]作为缓存时的一些使用经验+线程模型

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.youkuaiyun.com/yjclsx/article/details/86758349 redis作为NoSQL数据库,经常用作缓存,所以推荐将那些经常查询的数据存入redis中方便下次快速获取。但redis没有像关系型数据库那样拥有结构化的查询语言,...

Sean Zou 189

Java实战:利用Redis实现高效分页+多条件模糊查询

篇文章将深入探讨如何巧妙地利用Redis实现包含分页和多条件模糊查询在内的复杂组合查询方案,通过具体示例详细解读背后的实现原理和注意事项。

oandy0的博客 5485
上一篇: Redis
下一篇: Shiro(1):什么是Shiro
QEcode
博客等级 码龄10年 39粉丝 147原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值