返回顶部
首页 > 资讯 > 数据库 >redis怎么实现条件查询?
  • 128
分享到

redis怎么实现条件查询?

2024-04-02 19:04:59 128人浏览 薄情痞子
摘要

Redis怎么实现条件查询?这个问题可能是我们日常工作经常见到的。通过这个问题,希望你能收获更多。今天跟随小编一起来看解决方案吧。一、导入jar包二、实现简单的条件查询创建一个User实体类public c

Redis怎么实现条件查询?这个问题可能是我们日常工作经常见到的。通过这个问题,希望你能收获更多。今天跟随小编一起来看解决方案吧。

一、导入jar

redis怎么实现条件查询?

二、实现简单的条件查询

创建一个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对象存到缓存中

redis怎么实现条件查询?

接下来,首先实现单条件的查询,比如说查询年龄为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);

redis怎么实现条件查询?

那么,如果想要查询年龄为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]

以上就是redis实现条件查询的方法介绍,代码示例简单明了,如果在日常工作遇到此问题。通过这篇文章,希望你能有所收获,更多详情敬请关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: redis怎么实现条件查询?

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

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

猜你喜欢
  • redis怎么实现条件查询?
    redis怎么实现条件查询?这个问题可能是我们日常工作经常见到的。通过这个问题,希望你能收获更多。今天跟随小编一起来看解决方案吧。一、导入jar包二、实现简单的条件查询创建一个User实体类public c...
    99+
    2024-04-02
  • dedecms怎么实现条件查询
    dedecms可以使用SQL查询语句来实现条件查询,操作步骤为:1、打开DedeCMS管理后台;2、导航到“数据库管理”页面;3、根据需求,编写相应的查询语句;4、点击执行按钮或相应的提交按钮来执行查询;5、查看符合查询条件的记录即可。本教...
    99+
    2023-08-03
  • layui多条件查询怎么实现
    在Layui中实现多条件查询可以通过以下步骤实现:1. 在HTML页面中创建一个表单,包含多个输入框或下拉框,用于用户输入查询条件。...
    99+
    2023-09-22
    layui
  • mongodb多条件查询怎么实现
    在 MongoDB 中,可以使用 $and、$or 等逻辑运算符来实现多条件查询。以下是使用 $and 运算符实现多条件查询的示例:...
    99+
    2024-04-10
    mongodb
  • SQL中怎么实现多条件查询
    SQL中怎么实现多条件查询,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。第一种写法是if (@addDate is&n...
    99+
    2024-04-02
  • Linq中怎么实现多条件查询
    这篇文章将为大家详细讲解有关Linq中怎么实现多条件查询,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Linq多条件查询(高级搜索),假如一共可以输入5个条件,但是用户根据需要可能只输2个或...
    99+
    2023-06-17
  • mybatis plus实现条件查询
    目录一、wapper介绍二、常用的条件方法1. gt 表示 >2. le 表示 <=3. lt&nb...
    99+
    2024-04-02
  • Linq中怎么实现动态条件查询
    本篇文章给大家分享的是有关Linq中怎么实现动态条件查询,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在开发项目的过程中,我们经常会遇到这样的需求,动态组合条件的查询。比如淘宝...
    99+
    2023-06-17
  • 如何实现多条件查询
    这篇文章主要讲解了“如何实现多条件查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现多条件查询”吧! 而在对用户进行查...
    99+
    2024-04-02
  • JpaRepository 实现简单条件查询
    目录JpaRepository 简单条件查询创建持久化类定义数据访问层接口定义业务层类定义控制器类测试应用JpaRepository 查询规范1.JpaRepository支持接口规...
    99+
    2024-04-02
  • mybatisplus如何实现条件查询
    本篇内容介绍了“mybatisplus如何实现条件查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、wapper介绍用mp也可以方便的实...
    99+
    2023-06-30
  • SSH如何实现条件查询和分页查询
    这篇文章将为大家详细讲解有关SSH如何实现条件查询和分页查询,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、QueryHelper和PageResultQueryHel...
    99+
    2024-04-02
  • 怎么在MongoDB中实现多条件模糊查询
    怎么在MongoDB中实现多条件模糊查询?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。模糊查询是数据库的基本操作之一,实现对给定的字符串是否与...
    99+
    2024-04-02
  • Layui如何实现多条件查询
    这篇文章主要介绍了Layui如何实现多条件查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近做一个档案系统,发现字段超多带分页的多条件查询(分页需要后端分页,传page给...
    99+
    2023-06-25
  • mybatis实现多条件模糊查询
    EmployeeMapper.xml SELECT id,NAME,gender,idcard,nationid FROM employee WHERE 1=1 ...
    99+
    2023-09-01
    sql 数据库 mysql
  • MyBatis-Plus 条件查询器的实现
    目录一、常用注解1.1 @TableName1.2 @TableId1.3 @TableField1.4 @TableLogic二、条件构造器Wrapper2.1 QueryWrap...
    99+
    2024-04-02
  • mysql怎么多条件查询
    在 mysql 中进行多条件查询有两种方法:使用 and 运算符:只在所有条件都满足时返回结果。使用 or 运算符:满足其中任何一个条件即可返回结果。 使用 MySQL 进行多条件查询...
    99+
    2024-04-02
  • Springboot+Mybatis怎么实现分页加条件查询功能
    本篇内容介绍了“Springboot+Mybatis怎么实现分页加条件查询功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!User.xml...
    99+
    2023-06-30
  • 怎么使用JPA+querydsl实现多条件动态查询
    这篇文章将为大家详细讲解有关怎么使用JPA+querydsl实现多条件动态查询,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JPA querydsl多条件动态查询相信很多人在做订单管理的时候会用到多条件的...
    99+
    2023-06-29
  • mysql如何实现条件查询语句
    小编给大家分享一下mysql如何实现条件查询语句,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 在mysql中,可以使用SELECT语句和WHER...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作