1.java连接上redis
- package com.zlj.ssm.redis;
-
- import redis.clients.jedis.Jedis;
-
- /**
- * @author zlj
- * @create 2023-11-03 19:27
- */
- public class Demo1 {
- public static void main(String[] args) {
- // 建立连接
- Jedis jedis=new Jedis("localhost",6379);
- // 设置密码 ./src/redis-cli -h -p -a
- jedis.auth("123456");
- // 测试连上与否 ping
- System.out.println(jedis.ping());
- }
- }
2.java操作redis的常见类型数据存储
- package com.zlj.ssm.redis;
-
- import redis.clients.jedis.Jedis;
-
- /**
- * @author zlj
- * @create 2023-11-03 19:27
- */
- public class Demo2 {
- public static void main(String[] args) {
- // 建立连接
- Jedis jedis=new Jedis("localhost",6379);
- // 设置密码 ./src/redis-cli -h -p -a
- jedis.auth("123456");
- // 测试连上与否 ping
- System.out.println(jedis.ping());
-
- // String的操作
- // set get del setex ttl
- jedis.select(3);
- jedis.set("test","牛逼");
- System.out.println(jedis.get("test"));
- jedis.setex("time",15,"运行需要花多少时间");
- System.out.println(jedis.ttl("time"));
-
-
- }
- }
- package com.zlj.ssm.redis;
-
- import redis.clients.jedis.Jedis;
-
- import java.util.HashMap;
- import java.util.Map;
-
- /**
- * @author zlj
- * @create 2023-11-03 19:27
- */
- public class Demo3 {
- public static void main(String[] args) {
- // 建立连接
- Jedis jedis=new Jedis("localhost",6379);
- // 设置密码 ./src/redis-cli -h -p -a
- jedis.auth("123456");
- // 测试连上与否 ping
- System.out.println(jedis.ping());
-
- // hset key attr1 val1 attr2 val2
- //jedis.hset("user","name","liubing");
- //jedis.hset("user","hobby","spa");
- //jedis.hset("user","age","20");
-
- Map map=new HashMap();
- map.put("name","liuwen");
- map.put("hobby","liuzhi");
- map.put("age","28");
- redisUtils.setHashMap(jedis,"user",map);
-
- System.out.println(jedis.hget("user", "hobby"));
- System.out.println(jedis.hgetAll("user"));
- //删除
- //long hdel=jedis.hdel("user","sex");
- //jedis.del("user");
- }
- }
- package com.zlj.ssm.redis;
-
- import redis.clients.jedis.Jedis;
-
- /**
- * @author zlj
- * @create 2023-11-04 17:54
- */
- public class Demo4 {
- public static void main(String[] args) {
- // 建立连接
- Jedis jedis=new Jedis("localhost",6379);
- // 设置密码 ./src/redis-cli -h -p -a
- jedis.auth("123456");
- // 测试连上与否 ping
- System.out.println(jedis.ping());
-
- jedis.lpush("hobby","篮球","羽毛球","乒乓球","依优库","唱歌");
- System.out.println(jedis.lindex("hobby", 1));
- System.out.println(jedis.lrange("hobby", 0, 3));
-
-
- }
- }
- package com.zlj.ssm.redis;
-
- import redis.clients.jedis.Jedis;
-
- import java.util.Map;
- import java.util.Set;
-
- /**
- * @author zlj
- * @create 2023-11-04 17:09
- */
- public class redisUtils {
- public static void setHashMap(Jedis jedis, String key, Map
map) { - if(map!=null && map.size() > 0){
- Set
keys=map.keySet(); - for (String k : keys){
- // key =name,hobby,age
- // value map.get(name);
- jedis.hset(key,k,map.get(k));
- }
-
- }
- }
- }
3.redis中的项目应用
redis一般用在哪?
存储基本不会变化的数据,然后这些数据又被多个地方使用
redix怎么用 用String
将存储的数据转换成json串,进行存储
在 Java 中使用 Redis 存储 JSON 对象,可以使用 Redis 的 String 类型来保存 JSON 字符串。以下是一个示例代码,演示了如何使用 Jedis 客户端在 Redis 中存储和获取 JSON 对象:
- import redis.clients.jedis.Jedis;
-
- public class RedisExample {
- public static void main(String[] args) {
- // 连接 Redis 服务器
- Jedis jedis = new Jedis("localhost");
-
- // 创建一个 JSON 对象
- String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";
-
- // 存储 JSON 对象到 Redis
- jedis.set("person", jsonString);
-
- // 从 Redis 获取 JSON 对象
- String storedJsonString = jedis.get("person");
- System.out.println("Stored JSON: " + storedJsonString);
-
- // 关闭 Redis 连接
- jedis.close();
- }
- }
在上述示例中,我们首先使用 Jedis 的构造函数连接到 Redis 服务器。然后,我们创建一个 JSON 字符串并将其存储在 Redis 中,使用 set 方法将 JSON 字符串作为值存储在名为 "person" 的键中。接下来,我们使用 get 方法从 Redis 中获取存储的 JSON 字符串,并打印出获取到的值。
请注意,Redis 存储的是 JSON 字符串,而不是 JSON 对象。如果你需要在 Java 中处理 JSON 对象,你可以使用 JSON 解析库,如 Jackson、Gson 等,将 JSON 字符串转换为 Java 对象进行操作。
确保你已经将 Jedis 客户端库添加到你的 Java 项目中。你可以通过 Maven 或 Gradle 等构建工具来添加依赖,并在代码中导入 redis.clients.jedis.Jedis 类。使用 Jackson 库将 JSON 字符串转换为 Java 对象:
- import com.fasterxml.jackson.databind.ObjectMapper; // import jackson package
-
- String jsonString = "{\"name\":\"John\", \"age\":30}"; // JSON string
- ObjectMapper mapper = new ObjectMapper(); // create an instance of ObjectMapper
- Person person = mapper.readValue(jsonString, Person.class); // convert json string to java object
在实际应用中广泛使用 Redis 作为数据缓存、分布式锁、消息队列等的解决方案。下面是一些常见的 Java Redis 项目应用示例:
数据缓存:使用 Redis 作为缓存,将热门或频繁访问的数据存储在 Redis 中,减少对底层数据存储系统(如数据库)的访问压力,提高系统的读取性能。
分布式锁:使用 Redis 的原子操作和过期时间特性,实现分布式锁功能,保证在分布式系统中的临界资源互斥访问,避免并发问题。
会话管理:使用 Redis 存储用户登录信息、会话数据等,实现分布式用户会话管理,便于多个应用服务间共享用户状态。
计数器和限流:使用 Redis 的计数器功能统计页面访问次数、API 调用次数等,还可以结合 Redis 的过期时间和持久化特性实现限流功能,控制请求的频率和并发量。
消息队列:使用 Redis 的发布订阅功能和列表数据结构,实现简单的消息队列,支持异步消息传递,解耦系统各个组件。
地理位置服务:使用 Redis 的地理位置(Geo)功能,记录位置信息,实现地理位置的查询和附近信息的搜索。
分布式缓存穿透和雪崩保护:使用 Redis 做分布式缓存,结合布隆过滤器、热点数据预热和设置适当的过期时间,保护系统免受无效查询和大规模缓存失效的影响。