目录
啥是redis数据库
- redis数据库,就是个数据库,本章完~剩下知识做了解即可
- redis数据库是非关系型数据库
- 它是将数据存储在内存中的数据库,而关系型数据库(例如mysql)是在持久化存储设备上存储数据
- 因为web2.0之后,不再是静态web页面,更多的是人机交互,所以使用传统关系数据库就太慢了,这时有人用c语言写出了redis,它运算速度简直快到不得了
- 我们知道,cpu是有缓存的,当用户查数据时,会先在缓存查,缓存没有在去cpu查,查完后会将这条数据放到缓存中,下次查询时就会更快,而redis就是类似cpu的缓存,把关系数据库内容临时放到redis中,进行操作,贼快
- 关系数据库和非关系型数据库不存在取代关系,而是互补关系,就像cpu和缓存
redis的下载
- 百度redis中文网,进入redis的中国分站,网址:https://www.redis.net.cn/
- 进入官网下载(官网下载是Linux版本)
- 下载windows版本需要使用GitHub,网址:https://github.com/MicrosoftArchive/redis/releases
- 下载完成后,解压即可使用
- 文件功能介绍
- redis.windows.conf:配置文件
- redis-cli.exe:redis的客户端
- redis-server.exe:redis的服务器端
- 运行测试
- 打开服务器端
- 运行客户端
redis的数据结构
-
redis的数据结构
- redis存储数据的结构是key-value的形式(也就是键值对),key只能是字符串,value有5种不同数据结构,
value5种结构如下:- string 字符串类型(相当于一个键对应了一个字符串)
- hash 哈希类型,类似于java的map集合,键值对格式(相当于一个键对应了一个对象)
- list 列表类型,数据可重复(相当于一个键对应了一个集合,一个集合有很多数据,可以重复)
- set 集合类型,数据不可重复(一个键对应一个集合,但元素不能重复)
- sortedset 有序集合类型,数据有序且不可重复(对应集合但有序又不可重)
- redis存储数据的结构是key-value的形式(也就是键值对),key只能是字符串,value有5种不同数据结构,
使用命令行操作redis
- 官方文档(可以参考官方文档查找命令)
- string类型命令
- 存储:set key value
- 获取:get key
- 删除:del key
- hash
- 存储:hset key field value
- 获取:hget key field
- 获取全部:hgetall key
- 删除:hdel key field
- list(将list想象成一个走廊,一个位置只能站一个人,两边都可以进人,我们可以选择从左边或从右边进入,最先进去的人在最里面,也最后出来,最后进去的人,在最外面,也最先可以出来)
- 存储:
- 从左边插入数据:lpush key value
- 从右边插入数据:rpush key value
- 获取:
- lrange key start end:范围获取
- 删除:
- lpop key:删除列表最左边数据
- rpop key: 删除列表最右边数据
- 存储:
- set(主要用于做并集,交集,差集等运算获取数据)
- 存储:sadd key value
- 获取全部:smembers key
- 删除指定:srem key value
- sortedset
- 存储:zadd key score value
- 获取:zrange key start end
- 删除:zrem key value
- 通用命令
- keys * :查询所有键
- type key:获取指定键对应值的数据类型
- del key:删除指定key
redis持久化
- 什么是持久化:
- 因为redis是非关系型数据库,数据临时保存在内存,一旦断电,数据就会丢失,所有需要将数据保存到持久化设备上,以防数据丢失,下次启动redis时,可以将数据恢复
- redis的持久化机制
- RDB:redis默认方法,无需配置,在一段时间间隔过后,检测key的变化情况,如果变化,就持久化当前数据
- AOF:使用日志功能实现每操作一次数据库,就持久化一次,因为这和关系型数据库基本类似了,而且消耗大量资源,所以不推荐使用
- RDB持久化
-
打开redis.windows.conf文件,找到配置信息
# after 900 sec (15 min) if at least 1 key changed 表示如果在900秒(15分钟)内有至少一个key发生改变,就持久化一次 save 900 1 # after 300 sec (5 min) if at least 10 keys changed 表示如果在300秒(5分钟)内有至少10个key发生改变,就持久化一次 save 300 10 # after 60 sec if at least 10000 keys changed 表示如果在60秒内有至少10000个key发生改变,就持久化一次 save 60 10000
-
- 测试持久化
- 修改配置文件,改成如果5秒内有两个key发生改变就持久化一次(改完记得保存)
- 以命令行方式打开服务端
- 目录中双击打开客户端(无需命令行)
- 进行命令行的键设置
最后记得将配置文件改回来
- AOF持久化(除了配置的步骤不一样,使用都和RDB模式一样,持久化后文件后缀名为aof)
使用jedis操作数据库
-
什么是jedis:
jedis是一款java操作redis数据库的工具 -
下载jedis相关jar包或者Maven导入
- jedis:直接百度jedis,然后下载即可
- commons-pool:直接百度,然后下载即可
-
使用java操作redis数据库
- 创建Maven工程
- 导包,新建测试类
- 测试
-
使用jedis操作string类型数据
- 从下图可以看到,jedis的方法名和redis的命令名是相同的,所以我们想要用jedis的方法依然参照redis官方文档即可
-
使用jedis操作hash类型数据
- 将获取连接和释放资源分离出来
- 编写测试方法
- 将获取连接和释放资源分离出来
-
list
Jedis连接池
- 不同于jdbc,jedis无需第三方提供连接池,它自己携带JedisPool连接池
- 一些其他配置