redis的简介:
redis是一种非关系型数据库,采用k-v键值对的形式存储,也可以做缓存,是一种基于内存的数据库,因此,redis的存储数据很快,官方数据每秒读速度达到11万次,写8万次,所以读写速度不是redis的瓶颈,redis采用了单线程。
redis的基本用法
5中基本类型:string list set sortset map
3中非基本类型:Geospatial(地图) Hyperloglog(求基数)Bitmap(比特位记录)
redis的事务:
一次性 顺序性 排他性
redis的事务部保证原子性,如果事务中有明显的语法错误,就直接抛出,不执行事务。如果出现逻辑错误,则不影响这个事务中其他的命令执行。
redis的乐观锁:watch
在一个事务执行之前,使用watch进行监控,一旦发现值发生了改变,就停止执行。因为redis是单线程,不必担心在事务执行的过程中对事务中的值进行修改。
redis连接数据库
jedis : 基于阻塞IO,同步,线程不安全。
lettuce:基于netty,异步非阻塞,线程安全。
Redis基于配置文件启动:
bind 127.0.0.1 #绑定的ip 一般是本机
port 6379 #绑定的端口
protected-mode yes #设置为守护线程
pidfile /var/run/redis.pid #设置为守护进程的文件配置
logfile "" #配置文件的位置
databases 16 #默认的数据库个数
always-show-logo yes #是否展示log
#针对rdb储存方式,第一个为例,如果在900s内key修改少于等于一次,就900秒刷新一次
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb #保存的文件名,如果开集群修改配置文件,必须修改,不然有错
dir ./ rdb #保存的目录,如果开集群修改配置文件,必须修改,不然有错
appendonly no #是否开启aof
appendfilename "appendonly.aof" #aof保存的名字
appendfsync always # 每次修改都会 sync。消耗性能高。
#appendfsync everysec # 每秒执行一次
#appendfsync everysec # 不跟新
redis的持久化:
如果只是用redis做缓存,不需要开启持久化。默认开启rdb
rdb:像是关系型数据库的数据文件,记录数据库数据,间隔一段时间储存一次。
aof : 像是关系型数据库的脚本文件,记录对redis增删改的文件,每次写一条增删改的指令更新一次(可以设置)
二者同时开启采用aof恢复,aof的比较完整。
redis可以做订阅发布,实现订阅功能。
redis集群:
一般是一主二从,采用“认老大”的方式确定主机。主机可以读写,从机只能读。
redis的哨兵模式:
如果没有哨兵,如果主机宕机,只能通过手动配置设置主机,为了自动选举出主机,配置一个哨兵集群,用来随机投票决定采取那个从机当主机。如果原来的从机恢复,则变成从机。
本文借鉴狂神说java的B站课程,自己整理的学习笔记,若有同学想学redis,推荐视频地址:https://space.bilibili.com/95256449