Java操作Redisの极速宝典:CRUD速度比外卖小哥还快!

22 阅读3分钟

各位代码急急国王!今天传授一套Redis九阳神功,让你在5分钟内把增删改查玩出花!(前提是你的网速别比树懒还慢)准备好你的IDE,咱们直接起飞!


第一式:连接Redisの光速秘籍

依赖注入 Maven 版)

<!-- 选妃环节:Jedis or Lettuce? -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.3.1</version>
</dependency>

创建连接の闪电战

public class RedisCrashCourse {
    private static final JedisPool pool = new JedisPool("localhost", 6379);

    public static void main(String[] args) {
        // 自动回收连接,比共享单车还方便
        try (Jedis jedis = pool.getResource()) {
            jedis.auth("你的密码不是admin吧?");
            // 接下来开始表演杂技
        }
    }
}

第二式:增删改查の四重奏

1. 增( SET ) - 比发微信还简单

// 普通青年存字符串
jedis.set("肥宅快乐水", "可口可乐"); 

// 文艺青年存对象(需要序列化)
User user = new User("李狗蛋", 18);
jedis.set("user:1001".getBytes(), serialize(user)); 

// 二逼青年存过期时间(10秒自毁模式)
jedis.setex("临时验证码", 10, "ABCDE");

2. 查(GET) - 比翻聊天记录还快

// 取字符串
String drink = jedis.get("肥宅快乐水"); 

// 取对象(反序列化警告)
byte[] userData = jedis.get("user:1001".getBytes());
User user = (User) deserialize(userData);

// 取所有符合要求的key(慎用!)
Set<String> keys = jedis.keys("user:*"); 

3. 改( SET ) - 覆盖大法好

// 直接覆盖原有值
jedis.set("肥宅快乐水", "百事可乐"); // 可口党震怒!

// 只更新已存在的key(防止手滑创建新key)
jedis.set("存在的key", "新值", SetParams.setParams().xx());

4. 删( DEL ) - 毁尸灭迹专用

// 单杀
jedis.del("肥宅快乐水"); 

// 群灭
jedis.del("user:1001", "user:1002"); 

// 危险动作!请勿模仿!
// jedis.flushDB();  // 删库跑路快捷键

第三式:性能狂魔の骚操作

1. 管道操作(性能提升10倍)

try (Pipeline pipeline = jedis.pipelined()) {
    for (int i = 0; i < 1000; i++) {
        pipeline.set("key" + i, "value" + i);
    }
    pipeline.sync(); // 这波操作像同时发射一千发火箭
}

2. 批量操作大礼包

// 批量获取
List<String> values = jedis.mget("key1", "key2", "key3");

// 批量设置
Map<String, String> data = new HashMap<>();
data.put("name", "王铁柱");
data.put("age", "28");
jedis.mset(data);

3. 原子计数器

// 文章阅读量统计
jedis.incr("article:666:views"); // 原子+1
jedis.incrBy("article:666:views", 10); // 原子+10

第四式:避坑指南の血泪史

坑1:键命名太随意

❌ 错误示范:jedis.set("userData", ...)

✅ 正确姿势:user:1001:profile (用冒号分层,像快递柜编号)

坑2:忘记设置过期时间

内存泄漏警告!使用expire命令:

jedis.setex("验证码", 300, "123456"); // 5分钟自毁
// 或者后续设置
jedis.expire("验证码", 300); 

坑3:连接泄漏

永远使用try-with-resources:

try (Jedis jedis = pool.getResource()) { // 自动关闭连接
   // 一顿操作
}
// 不用手动close!不用手动close!不用手动close!

终极大招:性能监控の天眼

// 查看Redis状态(比体检报告还详细)
String info = jedis.info();

// 监控关键指标
System.out.println("内存使用:" + jedis.info("memory"));
System.out.println("连接数:" + jedis.info("clients"));
System.out.println("命令统计:" + jedis.info("commandstats"));

最后送上祖传忠告:

生产环境禁用KEYS命令!

(除非你想体验KEYS *让Redis当场去世的刺激)

现在你已经掌握Redis闪电五连鞭!要不要挑战用Redis实现秒杀系统?