Redis的学习过程

Redis的学习过程

一.Redis的安装和各种配置

1.安装

  1. Redis官方网站: link
  2. 在centos中安装gcc编译器( 终端命令为 yum install gcc)
    在这里插入图片描述ps:gcc可能会安装失败,这是需要切换centos-vault源,可根据https://developer.aliyun.com/mirror/这个网址提示进行操作。
  3. 下载redis-6.2.1.tar.gz放/opt目录,并解压到此文件夹里。
  4. 解压完成后进入目录:cd redis-6.2.1,在redis-6.2.1目录下再次执行make命令(进行编译)
  5. 继续执行: make install

2.设置后台启动

  1. 备份redis.conf:拷贝一份redis.conf到其他目录 指令:cp /opt/redis-3.2.5/redis.conf /myredis
  2. 修改redis.conf文件将里面的daemonize no 改成 yes,让服务在后台启动
  3. Redis启动:redis-server /myredis
  4. 用客户端访问:redis-cli
    在这里插入图片描述

二. 常用指令(就不在这多写了)

三.配置文件

网络相关配置

1.bind

默认情况bind=127.0.0.1只能接受本机的访问请求,不写的情况下,无限制接受任何ip地址的访问,生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉

![在这里插入图片描述保存配置,停止服务,重启启动查看进程,不再是本机访问了。](https://img-blog.csdnimg.cn/f738c6bc672c4d69a32c308fcbca9b10.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NET在这里插入图片描述
保存配置,停止服务,重启启动查看进程,不再是本机访问了。
在这里插入图片描述

2.protected-mode

将本机访问保护模式设置no
在这里插入图片描述

3.Port

端口号,默认 6379

Jedis

1.Jedis所需要的jar包

 <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
</dependency>

2.连接Redis注意事项

1.关闭防火墙
service iptables stop : 一次性关闭防火墙,当前有效, 下次启动无效。
chkconfig iptables off : 永久关闭防火墙, 下次启动有效, 当前无效 。
2.redis.conf中注释掉bind 127.0.0.1 ,然后 protected-mode no。
3.redis要启动。

3.测试程序

public class JedisDemo {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("192.168.83.129",6379);
        String ping = jedis.ping();
        jedis.set("k1","v1");
        jedis.set("k2","v1");
        jedis.set("k3","v1");
        Set<String> keys = jedis.keys("*");
        for (String key:keys){
            System.out.println(key);
        }
        System.out.println(jedis.get("k1"));
        System.out.println(ping);
    }
}

四、持久化-RDB、AOF

1.RDB:在指定的时间间隔内,将内存的数据集快照(dump.rdb)写入磁盘内,默认保存的文件名为dump.rdb。

修改保存rdb保存的间隔,可以修改redis的配置文件redistribution.config
在这里插入图片描述
RDB的优势:1、适合大规模的数据恢复。 2、按照业务定时备份。
3、RDB在内存中比AOF快。
劣势:1、数据易丢失,因为备份是按照一定的时间间隔进行备份的 。
2. 数据全量同步,如果数据量大会导致IO影响服务器性能。

2.AOF:通俗的讲就是把redis的写操作(不记录读操作)以日志的形式保存在appendonly.aof文件中

如何开启AOF:配置文件中将 appendonly no改成appendonly yes
工作流程:在这里插入图片描述
1、Client作为命令的来源,会有多个源头以及源源不断的请求命令
2、在这些命令到达Redis Server 以后并不是直接写入AOF文件,会将其这些命令先放入AOF缓存中进行保存。这里的AOF缓冲区实际上是内存中的一片区域,存在的目的是当这些命令达到一定量以后再写入磁盘,避免频繁的磁盘IO操作。
3、AOF缓冲会根据AOF缓冲区同步文件的三种写回策略将命令写入磁盘上的AOF文件。
4、随着写入AOF内容的增加为避免文件膨胀,会根据规则进行命令的合并(又称AOF重写),从而起到AOF文件压缩的目的。
5、当Redis Server 服务器重启的时候会从AOF文件载入数据。

回写策略:在这里插入图片描述
always:同步回写,每写一个读操作都会立刻同步到磁盘中
everysec:每秒同步一次
no:先写到AOF缓存,何时写到磁盘由操作系统决定

回写机制: 启动AOF文件压缩,只保留可恢复数据的最小指令集(如: set k1 v1 set k1 v2 如果此时触发重写机制那么日志文件只保存 set k1 v2 这条指令 如果没有触发则两条指令都会被保存)。
在这里插入图片描述
默认配置:同时满足上面两个条件才会触发重写机制

AOF优势: 数据不易丢失
AOF劣势: 文件大小会比rdb大,且恢复速度比rdb慢

3.RDB+AOF:如果同时开启默认先加载AOF(官方推荐开启RDB+AOF混合模式)

如何开启: aof-use-rdb-preamble的值为 yes yes表示开启,设置为no表示禁用。
结论: RDB镜像做全量持久化,AOF做增量持久化
先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务的时候会从RDB和AOF两部分恢复数据,既保证了数据完整性,又提高了恢复数据的性能。简单来说:混合持久化方式产生的文件一部分是RDB格式,一部分是AOF格式

五、事务:保证一组指令能按顺序执行,且不会被其它指令插入。

1.和mysql事务的区别

单独隔离: redis是单线程架构,在没有执行完事务内的所有指令时,是不会接收别的客户端的请求。
没有隔离级别: 因为所有的指令在事务没有提交前都不会被实际的执行,所以也就不存在隔离级别的概念。
不保证原子性: 只能决定一个事务内指令执行的开始,并不能保证所有指令全部成功或者全部失败,没有回滚功能。
排它性: 在执行一个事务内的指令时,不会被其它指令插入。

2.常用命令

在这里插入图片描述

3.操作

正常执行
在这里插入图片描述
放弃事务
在这里插入图片描述
全部不执行
在这里插入图片描述
全部执行
在这里插入图片描述
watch监控: redis使用watch提供乐观锁类似于CAS

在这里插入图片描述

六、管道:将命令一次打包发送给redis,返回一次结果(类似于批处理命令,但是管道支持多种数据类型的命令)

未完,还在持续学习中!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值