Java与Redis的集成

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Java与Redis的集成

Java连接Redis

Redis与MySQL都是数据库,java操作redis其实跟操作mysql的过程是一样的。


导入依赖

打开IDEA,进入Java项目,导入pom依赖


<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>


Redis服务器准备

导入依赖后,找到redis.bat双击启动redis


建立连接

创建一个类,里面写连接Redis的相关代码


public class Redis {
    public static void main(String[] args) {
        //建立与数据库连接
    Jedis jedis=  new Jedis("localhost",6379);
         //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
    }
}


如果运行显示PONG即可表明连接成功  


Java操作Redis常用类型数据


Redis字符串(String)


package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
         //        存值
        jedis.set("uname","帅哥");
         //        取值
        System.out.println(jedis.get("uname"));
         //        设置该hobby多久后自动删除
        jedis.setex("hobby",25,"game");
        //        查看剩余时间
        System.out.println(jedis.ttl("hobby"));
        //        修改值
        jedis.set("uname","美男子");
        System.out.println(jedis.get("uname"));
        //        删除值
       //  System.out.println(jedis.del("uname"));
    }
}


Redis哈希(Hash)


package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//      存值
//      jedis.hset("man","sname","帅哥");
//      jedis.hset("man","sage","18");
//      jedis.hset("man","sex","男");
//      取指定的字段值
//      System.out.println(jedis.hget("man", "sname"));
//      删除值
//      System.out.println(jedis.hdel("man","sage"));
//      查询指定的key的所有字段
//      System.out.println(jedis.hgetAll("man"));
//      查询指定的key是否存在
//      System.out.println(jedis.hexists("man", "sname"));
//      System.out.println(jedis.hexists("man", "sage"));
//      获取指定key的长度
//        System.out.println(jedis.hlen("man"));
    }
}


Redis列表(List)


package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//        lpush key value1 value2 value3          将一个或多个值插入到列表头部
        jedis.lpush("List_hobby", "唱", "跳", "rap", "篮球");
//        llen key                                获取列表的长度
        System.out.println(jedis.llen("List_hobby"));
//        lindex key index                        根据索引获取列表中的元素
        System.out.println(jedis.lindex("List_hobby", 0));
//        lrange key start sop                    查看指定范围内的元素
        System.out.println(jedis.lrange("List_hobby", 0, 2));
    }
}


Redis集合(Set)

package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
import java.util.Set;
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//        Redis集合(Set)
        //       sadd key value1 [value2]                向集合添加一个或多个元素
        jedis.sadd("set_user", "哈巴狗", "花猪", "牛马", "joker");
//        scard key                               获取集合中的元素数量
        System.out.println(jedis.scard("set_user"));
//        exists key                              是否存在
        System.out.println(jedis.exists("set_user"));
    }
}


Redis有序集合(Sorted Set)

package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//        5、Redis有序集合(Sorted Set)
// -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
        jedis.zadd("mysort", 1.0, "三国演义");
        jedis.zadd("mysort", 2.0, "西游记");
        jedis.zadd("mysort", 3.0, "水浒传");
        jedis.zadd("mysort", 4.0, "红楼梦");
        Map<String, Double> map = new HashMap<>();
        map.put("mutouliu", 5.0);
        jedis.zadd("mysort", map);
        //正序排列
        Set<String> mysort = jedis.zrange("mysort", 0, -1);
        System.out.println(mysort);
        //倒序排列
        Set<String> mysort1 = jedis.zrange("mysort", -1, 0);
        System.out.println(mysort1);
//        命令用于计算集合中元素的数量
        System.out.println(jedis.zcard("mysort"));
//        命令用于计算有序集合中指定分数区间的成员数量
        System.out.println(jedis.zcount("mysort", 0, 4));
//        命令在计算有序集合中指定字典区间内成员数量。
        System.out.println(jedis.zlexcount("mysort", "-", "+"));
    }
}


Redis在项目应用

Redis 是一个开源的内存数据库,它提供了键值对存储、发布/订阅、列表、集合、排序集等功能。在项目应用中,Redis 可以用于多个方面。

  1. 缓存:Redis 可以作为缓存层,将频繁读取的数据存储在内存中,从而加快数据访问的速度。通过将结果缓存在 Redis 中,可以减少对数据库或其他数据源的访问次数,提高系统的响应速度。
  2. 分布式锁:在分布式系统中,Redis 可以用于实现分布式锁,保证多个节点对共享资源的互斥访问。通过 Redis 的原子操作,可以实现安全的分布式锁机制,防止多个节点同时对同一个资源进行操作。
  3. 会话管理:在 Web 应用中,Redis 可以用于存储会话数据。通过将用户的登录状态和相关信息存储在 Redis 中,可以实现无状态的应用架构,提高系统的可伸缩性和性能。
  4. 计数器和排行榜:Redis 提供了计数器和排序集功能,可以方便地实现计数和排名功能。比如,可以使用 Redis 的计数器功能记录网站的访问量,使用排序集功能实现排行榜功能等。
  5. 消息队列:Redis 的发布/订阅功能可以用作简单的消息队列系统。通过将消息发布到特定的频道,其他订阅者可以接收并处理这些消息,实现解耦和异步处理。


需要注意的是,Redis 是一个内存数据库,数据存储在内存中,因此它适合处理对读写速度要求较高,但数据量相对较小的场景。在使用 Redis 时需要注意数据持久化、容灾备份等方面的考虑,以确保数据的安全性和可靠性。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
10天前
|
Java Maven Windows
使用Java创建集成JACOB的HTTP服务
本文介绍了如何在Java中创建一个集成JACOB的HTTP服务,使Java应用能够调用Windows的COM组件。文章详细讲解了环境配置、动态加载JACOB DLL、创建HTTP服务器、实现IP白名单及处理HTTP请求的具体步骤,帮助读者实现Java应用与Windows系统的交互。作者拥有23年编程经验,文章来源于稀土掘金。著作权归作者所有,商业转载需授权。
使用Java创建集成JACOB的HTTP服务
|
6天前
|
存储 缓存 NoSQL
【Java面试题汇总】Redis篇(2023版)
Redis的数据类型、zset底层实现、持久化策略、分布式锁、缓存穿透、击穿、雪崩的区别、双写一致性、主从同步机制、单线程架构、高可用、缓存淘汰策略、Redis事务是否满足ACID、如何排查Redis中的慢查询
【Java面试题汇总】Redis篇(2023版)
|
20天前
|
Java Devops 持续交付
探索Java中的Lambda表达式:简化代码,提升效率DevOps实践:持续集成与部署的自动化之路
【8月更文挑战第30天】本文深入探讨了Java 8中引入的Lambda表达式如何改变了我们编写和管理代码的方式。通过简化代码结构,提高开发效率,Lambda表达式已成为现代Java开发不可或缺的一部分。文章将通过实际例子展示Lambda表达式的强大功能和优雅用法。
|
21天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
15 3
|
28天前
|
缓存 NoSQL Java
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
|
26天前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
|
26天前
|
缓存 NoSQL Java
【Azure Redis 缓存】定位Java Spring Boot 使用 Jedis 或 Lettuce 无法连接到 Redis的网络连通性步骤
【Azure Redis 缓存】定位Java Spring Boot 使用 Jedis 或 Lettuce 无法连接到 Redis的网络连通性步骤
|
27天前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Redis连接无法建立问题的排查(注:Azure Redis集成在VNET中)
【Azure Redis 缓存】Redis连接无法建立问题的排查(注:Azure Redis集成在VNET中)
|
28天前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
|
2月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
169 6