Redis
概念
redis是一款高性能的非关系型的数据库。存储形式是key-value.
非关系型数据库特点
- 数据之间没有关联关系
- 数据存储在内存中
下载安装
- 官网:https://redis.io
- 中文网:http://www.redis.net.cn
- 解压可以直接使用
- redis.windows.conf:配置文件
- redis-cli.exe:redis的客户端
- redis-server.exe:redis的服务器端
命令操作
-
redis的数据结构
- redis存储的是:key-value格式的数据,其中key都是字符串,value有5种不同的数据结构
- value的数据结构
- 字符串类型:string
- 哈希类型:hash:map格式
- 列表类型:list:linkedlist格式
- 集合类型:set;
- 有序集合类型:sortedset
- value的数据结构
- redis存储的是:key-value格式的数据,其中key都是字符串,value有5种不同的数据结构
-
字符串类型 string
- 存储:set key value
- 获取:get key
- 删除:del key
-
哈希类型 hash
-
存储:hset key field value
-
获取:hget key field
hgetall key(获取所有field的value)
-
删除:hdel key field
-
-
列表类型 list 可以使用头插法和尾插法
-
存储:lpush key value(头插法)
rpush key value(尾插法)
-
获取:lrange key start end :范围获取
-
删除:lpop key 删除最左边的元素,并将元素返回
rpop key 删除最右边的元素,并将元素返回
-
-
集合类型 set
- 存储:sadd key value
- 获取:smembers key
- 删除:srem key value
-
通用命令
- keys *:查询所有的键
- type key:获取键对应的value类型
- del key:删除键
持久化
-
redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
-
redis持久化机制:
-
RDB:默认方式,不需要进行配置,默认就使用这种机制
在一定的间隔时间中,检测key的变化,然后持久化数据
-
AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次操作后持久化数据
-
Jedis
-
引入依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.0</version> </dependency>
-
测试
public class JedisTest { private Jedis jedis; @BeforeEach void setup(){ // 建立连接 jedis = new Jedis("127.0.0.1",6379); // 选择数据库 jedis.select(0); } @Test void testString(){ //存入数据 String result = jedis.set("name","zhangsan"); System.out.println("result=" + result); //获取数据 String name = jedis.get("name"); System.out.println("name=" + name); } @AfterEach void tearDown(){ if (jedis != null){ jedis.close(); } } }
SpringDataRedis
Spring-data-redis是spring大家族的一部分,提供了在srping应用中通过简单的配置访问redis服务,对reids底层开发包(Jedis, JRedis, and RJC)进行了高度封装,RedisTemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。
spring-data-redis针对jedis提供了如下功能:
连接池自动管理,提供了一个高度封装的“RedisTemplate”类
针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
ValueOperations:简单K-V操作
SetOperations:set类型数据操作
ZSetOperations:zset类型数据操作
HashOperations:针对map类型的数据操作
ListOperations:针对list类型的数据操作