介绍
Redis是一个基于内存的key-value 结构数据库
- 基于内存存储,读写性能高
- 适合存储热点数据(热点商品,咨询,新闻)
Redis的下载安装
windows下载redis
下载后直接解压即可,解压后结构目录如下
启动redis服务
命令行输入redis-server.exe redis.windows.config
默认端口号为6379
结束redis服务:Ctrl+c
客户端连接redis服务
连接本地redis:redis-cli.exe
连接远程redis:redis-cli.exe -h ip -p 端口号 -a 密码
客户端退出:exit
修改redis密码
修改配置文件项中的配置:requirepass foobared(替换成自己的密码)
redis数据类型
- 字符串(string):普通字符串,Redis中最简单的数据类型
- 哈希(hash):也叫散列,类似于Java中的HashMap结构
- 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList
- 集合(set):无序集合,没有重复元素,类似于Java中的HashSet
- 有序集合(sorted set/zset):集合中每个元素关联一个double类型的分数用来排序
- (score),根据分数升序排序,没有重复元素
redis常用命令
字符串操作命令
设置指定key的值
SET key value
获取指定key的值
GET key
设置指定key的值,并将key的过期时间设为 seconds秒
SETEX key seconds value
只有在key不存在时设置key的值
SETNX key value
哈希操作命令
将哈希表key中的字段field的值设为value
HSET key field value
获取存储在哈希表中指定字段的值
HGET key field
删除存储在哈希表中的指定字段
HDEL key field
获取哈希表中所有字段
HKEYS key
获取哈希表中所有值
HVALS key
列表操作命令
将一个或多个值插入到列表头部
LPUSH key value1 [value2]
获取列表指定范围内的元素
LRANGE key start stop
移除并获取列表最后一个元素
RPOP key
获取列表长度
LLEN key
集合操作命令
向集合添加一个或多个成员
SADD key member1[member2]
返回集合中的所有成员
SMEMBERS key
获取集合的成员数
SCARD key
返回给定所有集合的交集
SINTER key1 [key2]
返回所有给定集合的并集
SUNION key1 [key2]
删除集合中一个或多个成员
SREM key member1 [member2]
有序集合操作命令
Redis有序集合是string类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令:
向有序集合添加一个或多个成员
ZADD key score1 member1 [score2 member2]
通过索引区间返回有序集合中指定区间内的成员
ZRANGE key start stop [WITHSCORES]
有序集合中对指定成员的分数加上增量 increment
ZINCRBY key increment member
移除有序集合中的一个或多个成员
ZREM key member [member ... ]
通用命令
查找所有符合给定模式(pattern)的key
KEYS pattern
检查给定key是否存在
EXISTS key
返回key 所储存的值的类型
TYPE key
该命令用于在key 存在是删除key
DEL key
在java中操作redis
redis的java客户端很多,常用的几种:
- jedis
- Lettuce
- Spring Data Redis
Spring Data Redis是spring的一部分,对redis底层操作进行了封装,接下来,我们将使用Spring Data Redis来对redis进行操作
Spring Data Redis 使用
1.导入maven坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.在spring配置文件中配置redis数据源(端口,IP,密码)
redis:
host:localhost
port:6379
password:123456
database:0//可不配置,redis默认情况下创建了16个数据库。
3.编写配置类,创建RedisTemplate对象。
@Configuration
@S1f4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
//设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置redis key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
4.通过RedisTemplate对象操作Redis
java中提供了专门的对象来操作redis,调用对象的方法即可
String类型
VaueOperations valueOperations=redisTemplate.opsForValue();
哈希类型
HashOperations hashoperation=redisTemplate.opsForHash();
列表类型
ListOperations listoperation=redisTemplate.opsForList();
集合类型
SetOperations setoperation=redisTemplate.opsForSet();
有序集合类型
ZSetOperations zSetoperation=redisTemplate.opsForZSet();
通用命令操作
Set keys=redisTemplate.keys("*");//获取所有key
Boolean name=sedisTemplaete.hasKey("name");//查看是否存在key
DataType type=redisTemplate.type(key);//查询key的类型
sedisTemplaete.delete("myList");//删除存在的key
框架Spring Cache
Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的缓存实现,例如:
- EHCache
- Caffeine
- Redis
想要切换不同的数据类实现只需要导入不同的依赖即可,例如之前我们导入了Dpring Data Redis的坐标,那他使用的就是redis缓存。
Spring Cache使用
1.导入maven坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<version>2.7.3</version>
</dependency>
Spring Cache常用注解
存储的key值通过注解的cacheNames和key属性进行设置
@CachePut(cacheNames="userCache",key="#user.id")
key的名字为"userCache::id"
删除多条数据
@CacheEvict(cacheNames ="userCache",allEntries=true)