前言
Redis是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。
1. Redis是什么?
Redis是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。 Redis是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的些基本要求,比如说,不遵循sql标准,事务,表结构等等,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 Java中数据结构:String,数组,list,set map… Redis提供了很多的方法,可以用来存取各种数据结构的数据。
2.特点(优势)
1.数据保存在内存,存取速度快,并发能力强
2.它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set--有序集合)和hash(哈希类型)。
3.redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。
4.它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
5.Redis支持集群(主从同步、负载均衡)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
6.支持持久化,可以将数据保存在硬盘的文件中
7.支持订阅/发布(subscribe/publish)功能 QQ群
1、数据存放:存放到内存中,还能不定期持久化到磁盘。存取速度快,并发能力强,断电后数据不丢失。
2、支持Value类型更多。
3、多种客户端(语言java php c# js)
4、支持集群来扩展空间 8G+8G+16G
5、开源(免费还有很多人维护)
3. 安装Redis服务端
3.1. windows下的安装和使用
1.下载redis程序软件
使用redisbin32或redisbin64
2.绿色软件,不需要安装,直接使用
3.启动redis服务(带配置文件启动,和不带配置文件启动)
4.连接到redis进行操作
cmd>{%redis%}/redis-cli-h ip地址-p端口号
ip 默认为本地-p默认6379
redis-cli -h 172.16.6.248 -p 6379
cmd>{%redis%}/redis-cli
基本用法
4. Redis持久化配置
Redis提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.
当满足持久化条件时,会进行持久化保存,还来不及保存的数据,会以aof日志的方式保存下来。 Redis启动时,先解析日志文件(一堆命令),恢复数据。然后还要加载rdb文件(取并集)。
5.RDB模式
RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式. 如何关闭 rdb 模式: save “” save 900 1 //至少在900秒的时间段内至少有一次改变存储同步一次 save xxx save 60 10000
6.AOF日志追加模式
AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
如何开启aof模式:
appendonly yes //yes 开启,no 关闭 #appendfsync always //每次有新命令时执行一次fsync,就将缓冲区的数据放入aof文件 #这里我们启用 everysec appendfsync everysec //每秒 fsync 一次 #appendfsync no //从不fsync(交给操作系统来处理,可能很久才执行一次fsync) 其它的参数请大家看redis.conf配置文件详解
7.Redis经典实用场景-缓存
7.1为什么要使用缓存
把经常查询的数据,很少修改的数据存放到缓存中,减少访问数据库,降低数据库压力并且缓存一般都是内存,访问速度比较快。
7.2哪些数据适合放到缓存中
经常查询:缓存就是提供数据查询高效访问。 很少修改:修改时要同步修改缓存和数据库 例如:地区数据、商品分类、数据字典 菜单(不考虑权限)
7.3选择合适的缓存
Hibernate二级缓存,mybatis二级缓存,redis中央缓存 Hibernate二级缓存,mybatis二级缓存默认不支持集群缓存,要使用redis
7.4怎么存储数据
1)
json:把要存放的数据转换为json类型的字符串
保存缓存时:
Java Object----------->json字符串
获取缓存:
json字符串-------->Java Object-
Json框架:
jdk-json-lib jackson gson fastjson
2)二进制存放
把要存放的数据序列化为二进制序列化框架实现
8. 实现菜单缓存
最后
我这边整理了一份Redis数据库资料文档Java的系统化资料:(包括Java核心知识点、Spring系列全家桶、面试专题和21年最新的互联网真题、电子书等)有需要的朋友可以关注公众号【程序媛小琬】即可获取。