七天玩转Redis | 打卡第5天 Java操作Redis

flyfood flyfood 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

七天玩转Redis   

The fifth day---------Java操作Redis

目录

七天玩转Redis   

The fifth day---------Java操作Redis

一、Jedis类详解

1.导入所需jar包

2.Jedis类使用 

二、RedisTempate类详解

1.RedisTempate驱动下载

2.RedisTempate类基本使用

三、StringRedisTemplate类详解

1.StringRedisTemplate 与 StringRedisTemplate 区别

2.StringRedisTemplate类基本使用 


一、Jedis类详解

1.导入所需jar包

     下载链接 :https://mvnrepository.com/artifact/redis.clients/jedis/4.0.1

2.Jedis类使用 

Redis连接测试示例

 public static void main(String[] args) throws InterruptedException {
//        新建Jedis类对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);
//       测试Redis连接
        System.out.println("redis连接测试:" + jedis.ping());
}

Redis数据操作示例

    public static void main(String[] args) throws InterruptedException {
//        新建Jedis类对象
        Jedis jedis = new Jedis("127.0.0.1", 6379);
//       测试Redis连接
        System.out.println("redis连接测试:" + jedis.ping());
//        判断某个键是否存在
        System.out.println("判断某个键是否存在:" + jedis.exists("mykey"));
//        获取所有的键
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
 
//        根据key去删除键值对
        System.out.println("删除键" + jedis.del("mykey"));
 
 
        /**
         * String类型
         */
//        设置一个键值对
        jedis.set("mykey1", "myValue1");
        jedis.set("mykey2", "myValue2");
        jedis.set("mykey3", "myValue3");
//        根据索引获取一个数据的值
        System.out.println("得到的数值为:" + jedis.get("mykey2"));
        System.out.println("获取多个键值对:" + jedis.mget("mykey1", "mykey2", "mykey3"));
        System.out.println("获取mykey1的数据的长度:" + jedis.strlen("mykey1"));
        System.out.println("返回key中字符串值的子串:" + jedis.getrange("mykey2", 1, 5));
        System.out.println("字符串追加:" + jedis.append("mykey3", "hello"));
        System.out.println("获取到mykey3的值:" + jedis.get("mykey3"));
 
        /**
         * Hash类型
         */
//        设置一个Hash数据
        Map<String, String> valueMap = new HashMap<>();
        valueMap.put("name", "huixiaoyuan");
        valueMap.put("sex", "男");
        valueMap.put("age", "3");
        System.out.println("设置一个Hash数据" + jedis.hmset("myHash", valueMap));
        System.out.println("获取指定哈希表中所有的字段和值:" + jedis.hgetAll("myHash"));
        System.out.println("获取存储在哈希表中指定字段的值:" + jedis.hget("myHash", "name"));
        System.out.println("删除一个或多个哈希表字段:" + jedis.hdel("myHash", "sex"));
        System.out.println("获取哈希表中字段的数量:" + jedis.hlen("myHash"));
 
        /**
         * List类型
         */
        System.out.println("将一个或多个元素插入列表表头:" + jedis.lpush("myList", "l1", "l2", "l3"));
        System.out.println("将一个或多个元素插入列表尾部:" + jedis.rpush("myList", "l4"));
        System.out.println("获取列表长度:" + jedis.llen("myList"));
        System.out.println("通过索引获取列表中的元素:" + jedis.lindex("myList", 2));
        System.out.println("移除并获取列表第一个元素:" + jedis.lpop("myList"));
        System.out.println("移除并获取列表最后一个元素:" + jedis.rpop("myList"));
 
 
        /**
         * Hash类型
         */
        System.out.println("设置一个Hash数据" + jedis.hmset("myHash", valueMap));
        System.out.println("获取指定哈希表中所有的字段和值:" + jedis.hgetAll("myHash"));
        System.out.println("获取存储在哈希表中指定字段的值:" + jedis.hget("myHash", "name"));
        System.out.println("删除一个或多个哈希表字段:" + jedis.hdel("myHash", "sex"));
        System.out.println("获取哈希表中字段的数量:" + jedis.hlen("myHash"));
 
        /**
         * Set类型
         */
        System.out.println("向集合中添加一个或多个成员:" + jedis.sadd("mySet","s1","s2","s3"));
        System.out.println("向集合中添加一个或多个成员:" + jedis.sadd("mySet2","s3","s4","s5"));
        System.out.println("获取集合中成员的个数:" + jedis.scard("mySet"));
        System.out.println("返回第一个集合与其他集合之间的差异:" + jedis.sdiff("mySet","mySet2"));
        System.out.println("返回集合中的所有元素:" + jedis.smembers("mySet"));
 
 
        /**
         *ZSet类型
         */
        System.out.println("向有序集合中添加一个或多个成员:" + jedis.zadd("myZset",1,"m1"));
        System.out.println("向有序集合中添加一个或多个成员:" + jedis.zadd("myZset",2,"m2"));
        System.out.println("向有序集合中添加一个或多个成员:" + jedis.zadd("myZset",3,"m3"));
        System.out.println("获取有序集合的成员数:" + jedis.zcard("myZset"));
        System.out.println("计算有序集合中指定区间分数的成员数:" + jedis.zcount("myZset",0,2));
        System.out.println("移除有序集合中的一个或多个元素:" + jedis.zrem("myZset","m2"));
 
    }

二、RedisTempate类详解

Jedis是Redis官方推荐的面向Java的操作Redis的客户端,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring系列框架进行搭配使用,

所以Jedis一般可以用于没有使用spring系列框架的场景,而RedisTempate则多用于企业利用框架的实际开发中。

1.RedisTempate驱动下载

RedisTempate驱动下载地址
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis/2.6.3

2.RedisTempate类基本使用

RedisTemplate提供了五种操作数据类型的方法,分别对应了Redis的五种数据类型,

redisTemplate.opsForValue();  对应String类型操作
redisTemplate.opsForHash();  对应Hash类型操作
redisTemplate.opsForList();   对应List类型操作
redisTemplate.opsForSet();  对应Set类型操作
redisTemplate.opsForZSet();  对应ZSet类型操作

三、StringRedisTemplate类详解

上面我们讲了在spring系列框架中,可以使用RedisTemplate来操作Redis,但是还有一个相似的类StringRedisTemplate也是比较常用的,它主要用于操作字符串类型数据。

1.StringRedisTemplate 与 StringRedisTemplate 区别

  • StringRedisTemplate继承自RedisTemplate。
  • 两者的数据是不共通的;也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。
  •  SDR默认采用的序列化策略有两种,一种是String的序列化策略,一种是JDK的序列化策略。
  1. StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。
  2. RedisTemplate默认采用的是JDK的序列化策略,保存的key和value都是采用此策略序列化保存的。

note:

1.当你的redis数据库里面本来存的就是字符串数据或者你要存取的数据就是字符串类型数据的时候,那么你就使用StringRedisTemplate即可。

2.你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。

2.StringRedisTemplate类基本使用 

stringRedisTemplate.opsForValue();  对应String类型操作
stringRedisTemplate.opsForHash();  对应Hash类型操作
stringRedisTemplate.opsForList();   对应List类型操作
stringRedisTemplate.opsForSet();  对应Set类型操作
stringRedisTemplate.opsForZSet();  对应ZSet类型操作

...全文

相关推荐

Java+SSM+MySQL+微信小程序构建英语学习激励系统:从毕业设计到工程实践

在Java Web开发领域,SSM(Spring+SpringMVC+MyBatis)框架组合因其清晰的MVC分层架构和对核心编程思想(如IoC、AOP、ORM)的完整实践,依然是理解企业级应用开发的经典选择。其原理在于通过Spring的IoC容器管理对象生命周期,利用AOP处理横切关注点如事务管理,MyBatis则提供了灵活的SQL映射能力,实现对数据库的精准操作。这种技术栈的价值在于能够构建结构清晰、易于维护的中小型项目,尤其适合需要复杂业务逻辑和数据统计的场景,例如在线教育、用户激励系统等应用。本文聚

weixin_33907511

【信息科学与工程学】【广告科学】第四十四篇 广告平台投放和广告计费类算法01

全行业的中国企业广告投放模型总表。行业分类依据《国民经济行业分类》(GB/T 4754—2017)的门类/大类 ,产品层参考"主营产品统计代码"行业—产品映射 ,平台算法以巨量引擎、腾讯广告等官方文档为硬支撑 ,合规部分严格对齐《互联网广告管理办法》以及2026年市场监管部门最新合规提示 。编号类型(门类)行业(大类)企业及产品内容列表投放模型投放平台投放人群欲望激发维度面向人群模式(地域/文化/年龄/角色)001A 农林牧渔01 农业北大荒/中粮:五常大米、面粉、食用油、杂粮品牌曝光 + 电商转化双轨(C

flyair_China

全球检查台纸市场稳健增长:高频诊疗需求、产品升级与医疗供应链新机会.docx

全球检查台纸市场稳健增长:高频诊疗需求、产品升级与医疗供应链新机会

行业报告QY

超音速扩散器空气动力学优化的MATLAB代码.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

数字化转型最后一公里:AI如何打通企业技术需求对接瓶颈.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN
评论
收藏 已收藏
分享
返回顶部