- 内容简介
- 前言
- 第 1 章 第一个 Spring Boot 项目
- 第 2 章 集成 MySQL 数据库
- 第 3 章 集成 Spring Data JPA
- 第 4 章 使用 Thymeleaf 模板引擎
- 第 5 章 Spring Boot 事务支持
- 第 6 章 使用过滤器和监听器
- 第 7 章 集成 Redis 缓存
- 第 8 章 集成 Log4j 日志
- 8.3 使用 Log4j 记录日志
- 第 9 章 Quartz 定时器和发送 Email
- 第 10 章 集成 MyBatis
- 第 11 章 异步消息与异步调用
- 第 12 章 全局异常处理与 Retry 重试
- 第 13 章 集成 MongoDB 数据库
- 第 14 章 集成 Spring Security
- 第 15 章 Spring Boot 应用监控
- 第 16 章 集成 Dubbo 和 Zookeeper
- 第 17 章 多环境配置与部署
- 第 18 章 Spring Boot 原理解析
- 参考文献
7.1 Redis 缓存介绍

7.1.1 Redis 概述
Redis 是一个基于内存的单线程高性能 key-value 型数据库,读写性能优异。与 Memcached 缓存相比,Redis 支持丰富的数据类型,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set 有序集合)和 hash(哈希类型)。因此,Redis 在企业中被广泛使用。
7.1.2 Redis 服务器的安装
Redis 项目本身不支持 Windows,但是 Microsoft 开放技术小组开发和维护这个 Windows 端口(针对 Win64),所以我们可以在网络上下载 Redis 的 Windows 版本。具体步骤如下:
步骤 01 打开官方网站(http://redis.io/),单击 Download,如图 7-1 所示。
图 7-1 Redis 下载首页
步骤 02 在弹出的页面中找到 Learn more 链接,并单击进入,如图 7-2 所示。
图 7-2 单击 Learn more 链接
步骤 03 在弹出的页面中选择【releases】选项,如图 7-3 所示。
图 7-3 选择 releases
步骤 04 在弹出的界面中选择 Redis 3.0.504 版本,选择其他版本也可以,单击【Redis-x64-3.0.504.zip】下载 Redis 安装包,如图 7-4 所示。
图 7-4 下载 Redis 3.0.504 安装包
步骤 05 解压下载的安装包【Redis-x64-3.0.504.zip】,双击【redis-server.exe】,Redis 服务就运行起来了,如图 7-5 所示。同时,我们可以看到 Redis 启动成功的界面,如图 7-6 所示。
图 7-5 启动 redis 服务器
图 7-6 redis 启动成功界面
7.1.3 Redis 缓存测试
Redis 安装成功之后,我们可以在安装包里找到 Redis 客户端程序 redis-cli.exe,如图 7-7 所示。双击 redis-cli.exe,打开 Redis 客户端界面,如果 7-8 所示。
图 7-7 启动 redis 客户端
图 7-8 redis 启动成功界面
下面使用 Redis 客户端对 Redis 的几种数据类型做基本的增删改查操作练习,具体代码如下:
字符串类型的增删改查:
### 增加一个值 key 为 name,value 为 ay 127.0.0.1:6379> set name 'ay' OK ### 查询 name 的值 127.0.0.1:6379> get name "ay" ### 更新 name 的值为 al 127.0.0.1:6379> set name 'al' OK ### 查询 name 的值 127.0.0.1:6379> get name "al" ### 删除 name 的值 127.0.0.1:6379> del name (integer) 1 ### 查询是否存在 name,0 代表不存在 127.0.0.1:6379> exists name (integer) 0 127.0.0.1:6379>
List 集合的增删改查:
### 添加 key 为 user_list,value 为'ay','al' 的 list 集合 127.0.0.1:6379> lpush user_list 'ay' 'al' (integer) 2 ### 查询 key 为 user_list 的集合 127.0.0.1:6379> lrange user_list 0 -1 1) "al" 2) "ay" ### 往 list 尾部添加 love 元素 127.0.0.1:6379> rpush user_list 'love' (integer) 3 ### 往 list 头部添加 hope 元素 127.0.0.1:6379> lpush user_list 'hope' (integer) 4 ### 查询 key 为 user_list 的集合 127.0.0.1:6379> lrange user_list 0 -1 1) "hope" 2) "al" 3) "ay" 4) "love" ### 更新 index 为 0 的值 127.0.0.1:6379> lset user_list 0 'wish' OK ### 查询 key 为 user_list 的集合 127.0.0.1:6379> lrange user_list 0 -1 1) "wish" 2) "al" 3) "ay" 4) "love" ### 删除 index 为 0 的值 127.0.0.1:6379> lrem user_list 0 'wish' (integer) 1 ### 查询 key 为 user_list 的集合 127.0.0.1:6379> lrange user_list 0 -1 1) "al" 2) "ay" 3) "love" 127.0.0.1:6379>
Set 集合的增删改查:
### 添加 key 为 user_set,value 为"ay" "al" "love" 的集合 127.0.0.1:6379> sadd user_set "ay" "al" "love" (integer) 3 ### 查询 key 为 user_set 的集合 127.0.0.1:6379> smembers user_set 1) "al" 2) "ay" 3) "love" ### 删除 value 为 love,返回 1 表示删除成功,0 表示失败 127.0.0.1:6379> srem user_set 'love' (integer) 1 ### 查询 set 集合所有值 127.0.0.1:6379> smembers user_set 1) "al" 2) "ay" ### 添加 love 元素,set 集合是没有顺序的,所以无法判断添加到哪个位置 127.0.0.1:6379> sadd user_set 'love' (integer) 1 ### 查询 set 集合所有的值,发现添加到第二个位置 127.0.0.1:6379> smembers user_set 1) "al" 2) "love" 3) "ay" ### 添加 love 元素,set 集合已经存在,返回 0 代表添加不成功,但是不会报错 127.0.0.1:6379> sadd user_set 'love' (integer) 0
Hash 集合的增删改查:
### 清除数据库 127.0.0.1:6379> flushdb OK ### 创建 hash,key 为 user_hset,字段为 user1,值为 ay 127.0.0.1:6379> hset user_hset "user1" "ay" (integer) 1 ### 往 key 为 user_hset 的哈希集合添加字段为 user2,值为 al 127.0.0.1:6379> hset user_hset "user2" "al" (integer) 1 ### 查询 user_hset 字段长度 127.0.0.1:6379> hlen user_hset (integer) 2 ### 查询 user_hset 所有字段 127.0.0.1:6379> hkeys user_hset 1) "user1" 2) "user2" ### 查询 user_hset 所有值 127.0.0.1:6379> hvals user_hset 1) "ay" 2) "al" ### 查询字段 user1 的值 127.0.0.1:6379> hget user_hset "user1" "ay" ### 获取 key 为 user_hset 的哈希集合的所有字段和值 127.0.0.1:6379> hgetall user_hset 1) "user1" 2) "ay" 3) "user2" 4) "al" ### 更新字段 user1 的值为 new_ay 127.0.0.1:6379> hset user_hset "user1" "new_ay" (integer) 0 ### 更新字段 user2 的值为 new_al 127.0.0.1:6379> hset user_hset "user2" "new_al" (integer) 0 ### 获取 key 为 user_hset 的哈希集合的所有字段和值 127.0.0.1:6379> hgetall user_hset 1) "user1" 2) "new_ay" 3) "user2" 4) "new_al" ### 删除字段 user1 和值 127.0.0.1:6379> hdel user_hset user1 (integer) 1 ### 获取 key 为 user_hset 的哈希集合的所有字段和值 127.0.0.1:6379> hgetall user_hset 1) "user2" 2) "new_al" 127.0.0.1:6379>
SortedSet 集合的增删改查:
### 清除数据库 127.0.0.1:6379> flushdb OK ### 为 SortedSet 集合添加 ay 元素,分数为 1 127.0.0.1:6379> zadd user_zset 1 "ay" (integer) 1 ### 为 SortedSet 集合添加 al 元素,分数为 2 127.0.0.1:6379> zadd user_zset 2 "al" (integer) 1 ### 为 SortedSet 集合添加 love 元素,分数为 3 127.0.0.1:6379> zadd user_zset 3 "love" (integer) 1 ### 按照分数由小到大查询 user_zset 集合的元素 127.0.0.1:6379> zrange user_zset 0 -1 1) "ay" 2) "al" 3) "love" ### 按照分数由大到小查询 user_zset 集合的元素 127.0.0.1:6379> zrevrange user_zset 0 -1 1) "love" 2) "al" 3) "ay" ### 查询元素 ay 的分数值 127.0.0.1:6379> zscore user_zset "ay" "1" ### 查询元素 love 的分数值 127.0.0.1:6379> zscore user_zset "love" "3"
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论