Redis
启动项位于src目录中
redis-server 启动项
redis-cil 连接项
• redis-cil -h [ip地址] -p [端口号] -a [redis密码] 远程连接代码
顶层
redis.conf 配置文件
redis字符类型
介绍
Redis存储的是key-value结构的数据,其中key是字符串类型,value有五种常用的数据类型
1 | 2 |
string | 普通字符串,常用 |
hash | 适合存储对象 |
list | list按照插入顺序排序,可以有重复元素 |
set | 无序集合,没有重复元素 |
sorted set | 有序集合,没有重复元素 |
select number | 切换数据库 |
Redis常用命令
通用命令
命令 | 作用 |
keys pattern | 查找所有符合给定模式(pattern)的key |
exists key | 检查给定key是否存在 |
type key | 返回key所储存的值的类型 |
ttl key | 返回给定key的剩余生存时间(TTL,time to live),以秒为单位 |
del key | 删除key |
Flushdb | 删除当前数据库中的所有key |
字符串String操作命令
命令 | 作用 |
set key value | 设置指定key的值 |
get key | 获取指定key的值 |
setex key seconds value | 设置指定key的值,并将key的过期时间设为seconds秒 |
setnx key value | 只有在key不存在时设置key的值 |
官网 redis.net.cn
哈希 hash 操作命令
Redis hash 是一个String类型的filed和value的映射表,hash特别适合用于存储对象,常用命令:
命令 | 作用 |
hset key field value | 将哈希表key中的字段filed的值设为value |
hget key field | 获取存储在哈希表中指定字段的值 |
hdel key field | 删除在哈希表中的指定字段的值 |
hkeys key | 获取哈希表中的所有字段 |
hvals key | 获取哈希表中所有值 |
hgetall key | 获取在哈希表中指定key的所有字段和值 |
列表list操作命令
Redis list是简单的字符串列表,按照插入顺序排列(先入后出)
命令 | 作用 |
lpush key value1 [value2] | 将一个或多个值插入到列表头部 |
lrange key start stop | 获取列表指定范围的元素 |
rpop key | 移除并获取列表的最后一个元素 |
llen key | 获取列表长度 |
brpop key1[key2] timeout | 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 |
集合set操作命令
Redis set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据
命令 | 作用 |
sadd key member1 [member2] | 向集合添加一个或多个成员 |
smembers key | 返回集合中的所有成员 |
scard key | 获取集合的成员数 |
sinter key1 [key2] | 返回给定所有集合的交集 |
sunion key1 [key2] | 返回所有给定集合的并集 |
sdiff key1 [key2] | 返回所有给定集合的差集 |
srem key member1 [member2] | 移除集合中一个或多个成员 |
有序集合sorted set 操作命令
Redis sorted set 有序集合是String类型元素的集合,且不允许重复的成员。每个元素都会关联一个duble类型的分数(score)。redis正好是通过分数来为集合中的成员进行从小到大排序。有序集合的成员是唯一的,但分数却可以重复。
命令 | 作用 |
zadd key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
zrange key start stop [WITHSCORES(显示分数)] | 通过索引区间返回有序集合中指定区间内的成员 |
zincrby key increment member | 有序集合中为指定成员的分数加上增量increment |
zrem key member1 [member2] | 移除有序集合中的一个或多个成员 |
在java中操作redis
jedis:
使用jedis时导入jedis依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.0</version>
</dependency>
创建jedis对象即可使用,方法名与redis命令相同
Spring Data Redis
spring data redis中提供了一个高度封装的类:RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下
接口 | |
ValueOperation | 简单K-V作用 |
SetOperation | set类型数据操作 |
ZSetOperation | zset类型数据操作 |
HashOperation | 针对map类型的数据操作 |
ListOperation | 针对list类型的数据操 |
Spring Cache
介绍
spring cache 是一个框架,实现了基于注解的缓存功能,只需要加一个简单的注解,就能实现缓存功能。
spring cache 提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
CacheManager是spring提供的各种缓存技术的抽象接口
针对不同缓存技术要实现不同的CacheManager接口
CacheManager | 描述 |
EhCacheCacheManager | 使用EhCache作为缓存技术 |
GuavaCacheManager | 使用google的GuavaCache作为缓存技术 |
RedisCacheManager | 使用Redis作为缓存技术 |
Spring Cache常用注解
注解 | 说明 |
@EnableCaching | 开启缓存注解功能 |
@Cacheable | 在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放入缓存中 |
@CachePut | 将方法的返回值放到缓存中 |
@CacgeEvict | 将一条或多条数据从缓存中删除 |
在spring boot 中,使用缓存技术只需导入相关依赖,并在启动类上使用@EnableCaching开启缓存注解即可
例如:使用redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
Spring Cache使用方式
在Spring Boot项目中使用Spring Cache的操作步骤(使用redis缓存技术):
1、导入maven坐标
spring-boot-starter-data-redis、spring-boot-starter-cache
2、配置application.yml
spring:
cache:redis:
time-to-live: 1800000#设置缓存有效期
3、在启动类上加入@EnableCaching注解,开启缓存注解功能
4、在Controller的方法上加入@Cacheable、@CacheEvict等注解,进行缓存操作