了解Redis的核心价值和快速上手
Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能键值存储数据库。
最常见的使用场景,缓存热点数据,减轻数据库压力。
用户信息缓存、商品详情缓存、热门文章缓存在分布式系统中实现资源互斥访问。
秒杀场景、库存扣减、订单处理利用原子性操作实现各种计数功能。
文章阅读量、点赞数、访问统计使用有序集合实现实时排行榜。
游戏排行榜、热搜榜、销量排行使用列表或Stream实现简单的消息队列。
异步任务、延迟队列、事件通知存储用户会话信息,支持分布式会话共享。
用户登录状态、购物车、临时数据# 使用 Homebrew 安装
brew install redis
# 启动 Redis 服务
brew services start redis
# 或者前台启动
redis-server# Ubuntu/Debian
sudo apt update
sudo apt install redis-server
# CentOS/RHEL
sudo yum install redis
# 启动服务
sudo systemctl start redis
sudo systemctl enable redis# 拉取镜像
docker pull redis:latest
# 运行容器
docker run -d --name redis -p 6379:6379 redis:latest
# 进入容器
docker exec -it redis redis-cli# 下载源码
wget https://download.redis.io/redis-stable.tar.gz
tar -xzf redis-stable.tar.gz
cd redis-stable
# 编译安装
make
sudo make install
# 启动
redis-server# 连接本地Redis
redis-cli
# 连接远程Redis
redis-cli -h 192.168.1.100 -p 6379
# 使用密码连接
redis-cli -h 192.168.1.100 -p 6379 -a yourpassword# 测试连接
127.0.0.1:6379> PING
PONG
# 设置键值
127.0.0.1:6379> SET name "Redis"
OK
# 获取值
127.0.0.1:6379> GET name
"Redis"
# 查看所有键
127.0.0.1:6379> KEYS *
1) "name"
# 删除键
127.0.0.1:6379> DEL name
(integer) 1
# 检查键是否存在
127.0.0.1:6379> EXISTS name
(integer) 0# 查看服务器信息
127.0.0.1:6379> INFO
# 查看统计信息
127.0.0.1:6379> INFO stats
# 查看内存使用
127.0.0.1:6379> INFO memory
# 查看客户端连接
127.0.0.1:6379> CLIENT LIST<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>spring:
redis:
host: localhost
port: 6379
password:
database: 0
lettuce:
pool:
max-active: 8
max-idle: 8
min-idle: 0
max-wait: -1ms@Service
public class RedisService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
// 设置值
public void set(String key, Object value) {
redisTemplate.opsForValue().set(key, value);
}
// 设置值并指定过期时间
public void setWithExpire(String key, Object value, long timeout, TimeUnit unit) {
redisTemplate.opsForValue().set(key, value, timeout, unit);
}
// 获取值
public Object get(String key) {
return redisTemplate.opsForValue().get(key);
}
// 删除键
public Boolean delete(String key) {
return redisTemplate.delete(key);
}
// 检查键是否存在
public Boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}
// 设置过期时间
public Boolean expire(String key, long timeout, TimeUnit unit) {
return redisTemplate.expire(key, timeout, unit);
}
}@RestController
@RequestMapping("/api/cache")
public class CacheController {
@Autowired
private RedisService redisService;
@PostMapping("/set")
public String setValue(@RequestParam String key, @RequestParam String value) {
redisService.set(key, value);
return "设置成功";
}
@GetMapping("/get")
public Object getValue(@RequestParam String key) {
return redisService.get(key);
}
@DeleteMapping("/delete")
public String deleteValue(@RequestParam String key) {
redisService.delete(key);
return "删除成功";
}
}# 绑定IP(默认127.0.0.1)
bind 127.0.0.1
# 端口号
port 6379
# 后台运行
daemonize yes
# 密码设置
requirepass yourpassword
# 最大内存
maxmemory 256mb
# 内存淘汰策略
maxmemory-policy allkeys-lru
# 持久化文件名
dbfilename dump.rdb
# 持久化目录
dir /var/lib/redis