redis是基于内存的key-values数据库
- 基于内存存储,读写性能高
- 适合存储热点数据(热点商品、资讯、新闻)
- 企业应用广泛
常用数据类型
alue有5种常用的数据类型:
- 字符串(string):普通字符串,Redis中最简单的数据类型
- 哈希(hash):也叫散列,类似于Java中的HashMap结构
- 列表(list):按照插入顺序排序,可以有重复元素,类似于Java中的LinkedList
- 集合(set):无序集合,没有重复元素,类似于Java中的HashSet
- 有序集合(sorted set / zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素
操作命令
字符串操作命令
SET key value
设置指定key的值
GET key
获取指定key的值
SETEX key seconds value
设置指定key的值,并将 key 的过期时间设为 seconds 秒(ps:验证码)
SETNX key value
只有在 key 不存在时设置 key 的值
哈希操作命令
HSET key field value
将哈希表 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]
删除集合中一个或多个成员
有序集合操作命令
ZADD key score1 member1 [score2 member2]
向有序集合添加一个或多个成员
ZRANGE key start stop [WITHSCORES]
通过索引区间返回有序集合中指定区间内的成员
ZINCRBY key increment member
有序集合中对指定成员的分数加上增量 increment
ZREM key member [member ...]
移除有序集合中的一个或多个成员
通用命令
KEYS pattern
查找所有符合给定模式( pattern)的 key
EXISTS key
检查给定 key 是否存在
TYPE key
返回 key 所储存的值的类型
DEL key
该命令用于在 key 存在是删除 key
Spring Data Redis使用方式
导入Spring Data Redis 的maven坐标配置Redis数据源编写配置类,创建RedisTemplate对象通过RedisTemplate对象操作Redis
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory
redisConnectionFactory){
log.info("开始创建redis模板类...");
RedisTemplate redisTemplate = new RedisTemplate();
// 设置Key的序列化器,默认为JdkSerializationRedisSerializer
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}
解释说明:
当前配置类不是必须的,因为 Spring Boot 框架会自动装配 RedisTemplate 对象,但是默认的key序列化器为JdkSerializationRedisSerializer,导致我们存到Redis中后的数据和原始数据有差别,故设置为StringRedisSerializer序列化器。
相关接口
RedisTemplate 针对大量api进行了归类封装,将同一数据类型的操作封装为对应的Operation接口,具体分类如下:
ValueOperations
:string数据操作SetOperations
:set类型数据操作ZSetOperations
:zset类型数据操作HashOperations
:hash类型的数据操作ListOperations
:list类型的数据操作