一,Java连接Redis
1.1 连接前端服务器
打开RedisDesktopManager并连接Redis
不知道可看我上一篇文章:
【Redis】安装(Linux&window)及Redis的常用命令-CSDN博客
1.2 后端依赖
导入相关的jedis依赖
注意:要在dependencies标签中导入
pom.xml:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
1.3 Java连接
创建一个类,里面写连接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常用类型数据
2.1 Redis字符串(String)
package com.zking.ssm.common; import redis.clients.jedis.Jedis; /** * @Name BingBing * @company zking cy * @create 2023-11-03-18:04 */ 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")); } }
2.2 Redis哈希(Hash)
package com.zking.ssm.common; import redis.clients.jedis.Jedis; /** * @Name BingBing * @company zking cy * @create 2023-11-03-18:04 */ 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")); } }
2.3 Redis列表(List)
package com.zking.ssm.common; import redis.clients.jedis.Jedis; /** * @Name BingBing * @company zking cy * @create 2023-11-03-18:04 */ 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)); } }
2.4 Redis集合(Set)
package com.zking.ssm.common; import redis.clients.jedis.Jedis; import java.util.Set; /** * @Name BingBing * @company zking cy * @create 2023-11-03-18:04 */ 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")); } }
2.5 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;
/**
* @Name BingBing
* @company zking cy
* @create 2023-11-03-18:04
*/
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作为一种内存数据库,常用于缓存常用数据,如数据库查询结果、API响应等。通过将数据存储在Redis中,可以快速获取数据,提高系统的性能和响应速度。
会话管理:Redis可用于存储会话数据,特别是在分布式系统中,可以将用户的会话数据存储在Redis中,以实现多个服务节点之间的会话共享。
发布/订阅系统:Redis具有发布/订阅功能,可以用于构建实时消息系统。通过发布/订阅功能,可以将消息发送到频道,并由订阅者实时接收并处理消息。
排行榜/计数器:Redis提供了有序集合、计数器等功能,可以用于实现排行榜、计数器等应用场景。比如实时热门文章排行榜、用户关注数计数器等应用。
分布式锁:Redis提供了原子操作的能力,可以用于实现分布式锁。在分布式系统中,可以使用Redis的原子操作实现互斥锁,保证在同一时间只有一个进程能够访问共享资源,确保数据的一致性和并发安全性。
消息队列:Redis的列表结构非常适合用作消息队列。可以将待处理的任务作为消息发布到Redis的列表中,然后通过消费者逐一处理这些任务。
地理位置的存储与查询:Redis提供了地理位置相关的API,可以将地理信息与特定对象关联起来,并进行查询
总的来说,Redis在项目中的主要应用包括缓存、会话管理、发布/订阅系统、排行榜/计数器、分布式锁、消息队列以及地理位置的存储与查询等方面。这些应用可以提高系统性能、实现实时消息传递和数据共享等功能。