Redis学习笔记
介绍
Redis 是一个基于内存的 key - value 结构的缓存数据库,读写性能很好,适合存储热点数据。
在Windows下使用Redis
下载地址: https://github.com/microsoftarchive/redis/releases
安装包下载到本地后,直接解压缩即可。
Redis内置的数据类型
Redis存储的是 key - value 结构的数据,其中 key 的类型是字符串,value 的常用类型总结了下面5种:
- 字符串 string: 普通字符串,Redis中最简单的数据类型
- 哈希 hash: 类似于Java中的Map
- 列表 list: 按照插入的顺序排列,可以有重复元素,类似于Java中的List
- 集合 set: 无序集合,没有重复元素,类似于Java中的Set
- 有序集合 sorted set / zset: 集合中的每一个元素都关联着一个分数(double类型),根据分数升序排列,没有重复元素
Redis中常用命令
-
字符串类型常用命令
- set key value 设置指定 key 的值
- get key 获取指定 key 的值
- setex key seconds value 设置指定 key 的值,并将 key 的存活时间设为 seconds 秒
- setnx key value 只有当key不存在时才设置该value值
{\\}
-
哈希类型常用命令
- 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 获取指定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 member1 [member2] 删除有序集合中一个或多个成员
{\\}
-
通用命令
- keys pattern 查找所有符合给定模式(pattern)的 key
- exists key 检查给定的 key 是否存在
- type key 返回 key 所存储的值类型
- del key 删除指定的 key
{\\}
在Java代码中使用Redis
选择 Spring Data Redis 作为 Java 操作 Redis 的客户端。
- 导入 Spring Data Redis 的 maven 坐标
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
- 配置 Redis 数据源
# RedisProperties spring.redis.database=11 spring.redis.host=localhost spring.redis.port=6379
- 编写配置类,创建 RedisTempllate 对象
@Configuration @Slf4j public class RedisConfiguration { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { log.info("开始创建redis模板对象..."); RedisTemplate redisTemplate = new RedisTemplate(); //设置 redis 连接工厂对象 redisTemplate.setConnectionFactory(redisConnectionFactory); //设置 redis key 序列化器 redisTemplate.setKeySerializer(new StringRedisSerializer()); return redisTemplate; } }
- 通过 RedisTemplate 对象操作 Redis