1 Redis 概述
Redis是一款高性能的NoQSQL系列的非关系型数据库,那么关系型和非关系型数据库有什么区别呢?
区别 | 关系型数据库 | 非关系型数据库 |
---|---|---|
常见数据库 | MySQL、Oracle等 | Redis、hbase、MongDB等 |
形式 | 表的形式存储 | 存储key:value形式; |
特点 | 数据之间有关联关系; 数据存储在硬盘文件中; | 数据之间没有关联关系; 数据存储在内存中; |
以上仅是简单的对比,关系型数据库与NoSQL数据库是互补的关系,通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,以弥补关系型数据库的不足。一般会将数据存储在关系型数据库中,在NoSQL数据库中备份存储关系型数据库的数据
操作关系型数据库是非常耗时的,若要经常查询一些不太经常变化的的数据,可以使用缓存的思路解决这个问题,提高整体的查询性能,提升用户体验。
那么缓存的选择有很多方式,比如可以在当前服务器开辟一块内存空间,利用Map集合当做缓存,但是Map集合只能是让当前项目有缓存,对于分布式的部署来说,会有多台电脑,Map集合就不合适了,所以此时就有了非关系型数据库的用武之地。因为该类数据库数据存储在内存中,且可以部署独立的机器,可以让一个机器的所有内存被数据库独占,这是Map做不到的,因为其运行在Java虚拟机中,虚拟机只能固定分配一定空间的内存,且内存较小。如今的互联网中用Redis做缓存是比较多的。
2 Redis环境搭建
1)软件下载:直接从官网下载安装包,若不会FQ也可以从Redis中文网下载,不过后者的最新版本一般低于前者:
- Redis教程网址:https://www.redis.net.cn/tutorial/3503.html
- Window安装包下载:https://github.com/dmajkic/redis/downloads
- Linux安装包下载:http://www.redis.net.cn/download/
2)安装:直接解压即可,无需安装,需要了解几个文件:
- redis.windows.conf:配置文件;
- redis-cli.exe:redis的客户端;
- redis-server.exe:redis服务器端;
先双击redis-server.exe启动redis服务器,再双击redis-cli.exe打开客户端,就可以在客户端操作了
3 Redis的命令操作
操作Redis的方法有命令操作、Java代码方式,首先了解下Redis的数据结构,非常重要。
3.1 Reids的数据结构
Redis存储的是键值对:key,value形式的数据,其中key都是字符串,value有5种不同的数据结构:
- 1)字符串类型 string
- 2)哈希类型hash:map格式
- 3)列表类型 list:linkedlist格式,允许重复
- 4)集合类型 set:不允许重复
- 5)有序集合类型 sortedset:自动排序,且不重复
3.2 Reids的命令操作
1)字符串类型 string:
- 存储:set key value
- 获取:get key
- 删除:del key
2)哈希类型hash:map格式
- 存储:hset key field value
- 获取:hget key field获取指定field对应的值,hgetall key获取所有的field和value
- 删除:hdel key field
3)列表类型 list
列表按照插入顺序排序,可以添加元素到列表的头部或尾部。
- 添加:lpush key value,将元素添加到列表左边; rpush key value,将元素添加到列表右边;
- 获取:lrange key start end,范围获取;
- 删除:lpop key,删除列表最左边的元素并将其返回; rpop key,删除列表最右边的元素并将其返回;
4)集合类型 set:不允许重复
- 存储:sadd key value
- 获取:smembers key,获取集合中所有元素
- 删除:srem key value,删除集合中的某个元素
5)有序集合类型 sortedset:自动排序,且不重复
- 存储:zadd key score value,存储数据以及数据对应的分数,是根据分数排序的;
- 获取:zrange key start end
- 删除:zrem key value
6)通用命令
- keys *:查询所有的键
- type key:获取键对应的value类型
- del key:删除指定的key value
4 Redis的持久化
Redis是内存数据库,当Redis服务器重启或者电脑重启了,数据会丢失,可以将Redis内存中的数据持久化保存在内存的文件中,当重启后,Redis会恢复数据,保证不丢失。Redis持久化的机制:
1)RDB:默认方式,不用配置,在一定的间隔时间内,检测key的变化情况来持久化数据,这种方式对性能的影响比较低,推荐使用; --编辑redis.windows.conf文件: save 900 1 // after 900 sec (15 min) if at least 1 key changed save 300 10 // after 300 sec (5 min) if at least 10 keys changed save 60 10000 // after 60 sec if at least 10000 keys changed
修改完配置文件后需要使用命令行启动服务器:redis-server.exe redis.windows.conf,现修改为save 10 5,即10s后至少有5个key发生变化,则持久化数据,可以看到生成后缀为rdb的文件,测试效果如下:
2)AOF:日志记录方式,可以记录每一条命令操作,每一次命令操作后来持久化数据,这种方式对性能影响较大;
--编辑redis.windows.conf文件:
- appendonly no:默认为no,表示关闭AOF,改为yes开启
- # appendfsync always:默认注释了,表示每一次操作都进行持久化;
- appendfsync everysec:默认的,每隔一秒操作一次;
- # appendfsync no:不持久化;
修改完配置文件后需要使用命令行启动服务器:redis-server.exe redis.windows.conf,现修改为appendonly yes,即每隔1s持久化一次,可以看到生成后缀为aof的文件,测试效果如下:
———————————————————————————————————
本文为博主原创文章,转载请注明出处!