java如何使用redis
Redis在Java中的基本使用
安装Jedis或Lettuce客户端依赖(以Maven为例):
<!-- Jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.1</version>
</dependency>
<!-- Lettuce -->
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.2.3.RELEASE</version>
</dependency>
连接Redis服务器
Jedis连接示例:
Jedis jedis = new Jedis("localhost", 6379);
jedis.auth("password"); // 如果需要认证
System.out.println("连接成功:" + jedis.ping());
jedis.close();
Lettuce连接示例:
RedisClient client = RedisClient.create("redis://password@localhost:6379");
StatefulRedisConnection<String, String> connection = client.connect();
RedisCommands<String, String> commands = connection.sync();
System.out.println("连接成功:" + commands.ping());
connection.close();
client.shutdown();
基本数据操作
字符串操作:
jedis.set("key", "value");
String value = jedis.get("key");
jedis.expire("key", 60); // 设置60秒过期
哈希操作:
jedis.hset("user:1", "name", "John");
jedis.hset("user:1", "age", "30");
Map<String, String> user = jedis.hgetAll("user:1");
列表操作:
jedis.lpush("list", "item1");
jedis.lpush("list", "item2");
List<String> items = jedis.lrange("list", 0, -1);
使用连接池(Jedis)
配置连接池:
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(128);
poolConfig.setMaxIdle(64);
poolConfig.setMinIdle(16);
JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379);
try (Jedis jedis = jedisPool.getResource()) {
// 执行操作
}
jedisPool.close();
Spring Data Redis集成
配置Spring Boot项目:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml配置:
spring:
redis:
host: localhost
port: 6379
password: yourpassword
使用RedisTemplate:
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void saveData(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
}
public Object getData(String key) {
return redisTemplate.opsForValue().get(key);
}
发布/订阅模式
发布消息:
jedis.publish("channel", "message");
订阅消息:
JedisPubSub pubSub = new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
System.out.println("收到消息:" + message);
}
};
jedis.subscribe(pubSub, "channel");
事务处理
使用MULTI/EXEC:
Transaction t = jedis.multi();
t.set("a", "1");
t.set("b", "2");
t.exec();
Lua脚本执行
执行Lua脚本:

String script = "return redis.call('get', KEYS[1])";
Object result = jedis.eval(script, 1, "key");
注意事项
生产环境建议使用连接池管理连接,避免频繁创建销毁连接。对于高并发场景,Lettuce的异步特性通常比Jedis表现更好。Spring项目推荐使用Spring Data Redis简化操作,它同时支持Jedis和Lettuce实现。






