开发3年不知道Redis缓存,其实很正常?

236 阅读4分钟

前言

Redis是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。

总结了一张Redis知识图谱分享给大家

Redis.jpg

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下的安装和使用

image.png

1.下载redis程序软件

使用redisbin32或redisbin64

2.绿色软件,不需要安装,直接使用

3.启动redis服务(带配置文件启动,和不带配置文件启动)

image.png

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

基本用法

image.png

4. Redis持久化配置

image.png

Redis提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.

image.png

当满足持久化条件时,会进行持久化保存,还来不及保存的数据,会以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

image.png

2)二进制存放

把要存放的数据序列化为二进制序列化框架实现

8. 实现菜单缓存

image.png

最后

我这边整理了一份Redis数据库资料文档Java的系统化资料:(包括Java核心知识点、Spring系列全家桶、面试专题和21年最新的互联网真题、电子书等)有需要的朋友可以关注公众号【程序媛小琬】即可获取。