开发客户端集成
掌握 Python 和 Java 客户端的基础使用
理解连接池的作用
能在代码中实现基础缓存操作
核心讲解
实际开发中都是用语言客户端操作 Redis,不是直接用 redis-cli。
(1)Python 客户端:redis-py
Python 最常用的 Redis 客户端。
安装:
pip install redis连接:
Redis(host, port, password, db)方法名和 redis-cli 命令基本一致
连接池:ConnectionPool,复用连接
(2)Java 客户端
Jedis:老牌客户端,直连,性能好,简单
Lettuce:Spring Boot 默认,异步,响应式,线程安全
Redisson:高级客户端,封装了大量功能,分布式锁、集合等,推荐
代码示例
# ===== Python 示例 =====
import redis
# 创建连接
r = redis.Redis(
host='localhost',
port=6379,
password='',
db=0,
decode_responses=True
)
# 字符串操作
r.set('name', 'zhangsan')
print(r.get('name'))
# 计数器
r.incr('view_count')
print(r.get('view_count'))
# Hash操作
r.hset('user:1', 'name', 'zhangsan')
r.hset('user:1', 'age', '20')
print(r.hgetall('user:1'))
# List操作
r.rpush('msg_list', 'msg1', 'msg2')
print(r.lrange('msg_list', 0, -1))
# 设置过期
r.expire('name', 300)
// ===== Java Jedis 示例 =====
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisDemo {
public static void main(String[] args) {
// 连接池配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10);
try (JedisPool pool = new JedisPool(config, "localhost", 6379)) {
// 获取连接
try (Jedis jedis = pool.getResource()) {
// 字符串
jedis.set("name", "zhangsan");
System.out.println(jedis.get("name"));
// 计数器
jedis.incr("count");
// Hash
jedis.hset("user:1", "name", "lisi");
System.out.println(jedis.hgetAll("user:1"));
}
}
}
}
常见误区
每次操作新建连接:必须用连接池,不然频繁创建销毁连接性能极差
客户端和命令完全一样:大部分对应,但有些方法名不一样,参数顺序可能不同
不处理异常:网络异常、超时要处理,重试降级
什么都存 Redis:缓存是加速的,不能当数据库用,要考虑缓存一致性
课后练习
用 Python 客户端实现基本的字符串、Hash 操作
用 Java 客户端实现一个计数器
使用连接池,而不是单次连接
思考:为什么要用连接池?

