Redis持久化
为什么要持久化
Redis是内存数据库,宕机后数据会消失。
Redis重启后快速恢复数据,要提供持久化机制。
Redis持久化是为了快速的恢复数据而不是为了存储数据
Redis有两种持久化方式:RDB和AOF
注意:Redis持久化不保证数据的完整性。
当Redis用作DB时,DB数据要完整,所以一定要有一个完整的数据源(文件、mysql)在系统启动时,从这个完整的数据源中将数据load到Redis中数据量较小,不易改变,比如:字典库(xml、Table)
通过info命令可以查看关于持久化的信息
1234567891011121314151617181920212223# Persi ...
Redis慢查询日志与监视器
慢查询日志
Redis也有慢查询日志,可用于监视和优化查询
慢查询设置
在redis.conf中可以配置和慢查询日志相关的选项,此时设置是全局的
12345#执行时间超过多少微秒的命令请求会被记录到日志上 0 :全记录 <0 不记录slowlog-log-slower-than 10000#slowlog-max-len 存储慢查询日志条数slowlog-max-len 128
Redis使用列表存储慢查询日志,采用队列方式(FIFO)
config set的方式可以临时设置,redis重启后就无效
config set slowlog-log-slower-than 微秒
conf ...
Redis与Lua脚本
lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
Lua应用场景:游戏开发、独立应用脚本、Web应用脚本、扩展和数据库插件。
nginx上使用 lua 实现高并发
OpenRestry:一个可伸缩的基于Nginx的Web平台,是在nginx之上集成了lua模块的第三方服务器
OpenRestry是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。
用于方便地搭建能够处理超高并发(日活千万级别)、扩展性极高的动态Web应用、Web服 ...
Redis发布与订阅以及事务
发布与订阅
Redis提供了发布订阅功能,可以用于消息的传输
Redis的发布订阅机制包括三个部分,publisher,subscriber和Channel
发布者和订阅者都是Redis客户端,Channel则为Redis服务器端。
发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。
频道/模式的订阅与退订
subscribe:订阅 subscribe channel1 channel2 …
Redis客户端1订阅频道1和频道2
12345678127.0.0.1:6379> subscribe ch1 ch2Reading messages... ...
Redis数据类型选择和应用场景
Redis是一个Key-Value的存储系统,使用ANSI C语言编写。
key的类型是字符串。
value的数据类型有:
常用的:string字符串类型、list列表类型、set集合类型、sortedset(zset)有序集合类型、hash类型。
不常见的:bitmap位图类型、geo地理位置类型。
Redis5.0新增一种:stream类型
注意:Redis中命令是忽略大小写,(set SET),key是不忽略大小写的 (NAME name)
Redis的Key的设计
用:分割
把表名转换为key前缀, 比如: user:
第二段放置主键值
...
Redis客户端访问
Java程序访问Redis
1、关闭RedisServer端的防火墙
123systemctl stop firewalldsystemctl disable firewalld.service
2、新建maven项目后导入Jedis包到pom.xml
12345<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version></dependency> ...
Redis简介和安装
Redis简介
什么是Redis
Redis (Remote Dictionary Server)远程字典服务器,是用C语言开发的一个开源的高性能键值对( key-value )内存数据库。
它提供了五种数据类型来存储值:字符串类型、散列类型、列表类型、集合类型、有序集合类型
它是一种 NoSQL 数据存储。
Redis发展历史
2008年,意大利的一家创业公司 Merzia 推出了一款基于 MySQL 的网站实时统计系统 LLOOGG ,然而没
过多久该公司的创始人 Salvatore Sanfilippo ( antirez)便 对MySQL的性能感到失望,于是他决
定亲自为 LLOOGG ...
缓存原理与设计
缓存基本思想
缓存的使用场景
DB缓存,减轻DB服务器压力
一般情况下数据存在数据库中,应用程序直接操作数据库。
当访问量上万,数据库压力增大,可以采取的方案有:
读写分离,分库分表
当访问量达到10万、百万,需要引入缓存。
将已经访问过的内容或数据存储起来,当再次访问时先找缓存,缓存命中返回数据。
不命中再找数据库,并回填缓存。
提高系统响应
数据库的数据是存在文件里,也就是硬盘。与内存做交换(swap)。在大量瞬间访问时(高并发)MySQL单机会因为频繁IO而造成无法响应。MySQL的InnoDB是有行锁。
将数据缓存在Redis中,也就是存在了 ...
Azkaban使⽤
Azkaban可能遇到虚拟机内存不⾜情况:
增⼤机器内存
1234567891011121314151617# 查看内存大小free -h# 创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)dd if=/dev/zero of=/tmp/big_swap bs=1M count=1024# 目录空间大小du -sh /tmp/big_swap# 格式化为交换分区文件mkswap /tmp/big_swap # 启用交换分区文件swapon /tmp/big_swap # 查看下扩充后的内存f ...
Azkaban安装部署
准备⼯作
编译
这⾥选⽤azkaban3.51.0这个版本⾃⼰进⾏重新编译,编译完成之后得到我们需要的安装包进⾏安装
12345678910111213cd /opt/lagou/software/wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gztar -zxvf 3.51.0.tar.gz -C ../servers/cd /opt/lagou/servers/azkaban-3.51.0/yum -y install gityum -y install gcc-c++./gradlew build install ...