redis 相关知识

redis是单线程还是多线程的?

redis不同的版本之间采用线程模型是不一样的,在redis4.0版本之前使用的是单线程模型,在4.0版本之后增加了多线程的支持。在4.0之前虽然我们说redis是单线程,也只是说网络I/O线程以及set和get操作是由一个线程完成的。但是redis的持久化、集群同步还是使用其他线程完成的。

4.0之后添加了多线程的支持,主要体现在大数据的异步删除功能上,例如:unlink key、flushdb async。

为什么redis在4.0之前会选择淡线程,而且单线程还那么快?

选择单线程主要使用简单,不会存在锁竞争,不存在死锁和线程切换带来的性能和时间上的开销。但是单线程肯定也不会发挥出多核CPU的性能。

主要快的原因是:

1.redis的大部分操作都是在内存中完成的,内存中的执行效率本身就很快,并采用了高效的数据结构,比如:哈希表

2.使用单线程避免了多线程的竞争,省去了多线程切换带来的时间和性能开销,并且不会出现死锁。

3.采用 I/O 多路复用机制处理大量客户端的Socket请求,因为这是基于非阻塞的 I/O 模型,这就让Redis可以高效地进行网络通信,I/O的读写流程也不再阻塞。

Redis是如何实现数据不丢失的呢?

Redis数据是存储在内存中的,为了保证Redis数据不丢失,那就要把数据从内存存储到磁盘上,以便在服务器重启后还能够从磁盘中恢复原有数据,这就是Redis的数据持久化。Redis数据持久化有三种方式。

AOF 日志(Append Only File,文件追加方式):记录所有的操作命令,并以文本的形式追加到文件中。

RDB 快照(Redis DataBase):将某一个时刻的内存数据,以二进制的方式写入磁盘。

混合持久化方式:Redis 4.0 新增了混合持久化的方式,集成了 RDB 和 AOF 的优点。

redid 6380端口启动:

在已安装好了Redis的Linux机器上,部署多个实例端口步骤

  • step1:找到redis的安装目录的redis.conf

目录:/usr/local/src/redis-2.8.3/redis.conf

安装路径与实际为准,找到redis的安装目录即可

step2:创建log文件夹(选做)

/usr/local/src/redis-2.8.3/

如果该目录下没有log文件夹,则创建,有则无需创建

step3:复制redis.conf并修改新文件内容

复制当前目录下的redis.conf到/usr/local/src/redis-2.8.3/src/目录下,

并更改文件名为redis_6382.conf

并且需要修改redis_6382.conf中的内容如下:

使用vim命令修改文件内容

daemonize yes

pidfile /var/run/redis_6382.pid

port 6382

logfile “/usr/local/src/redis-2.8.3/log/redis_6382.log”

dbfilename dump_6382.rdb

dir /usr/local/src/redis-2.8.3/src

step4:启动新配置实例端口6382

有两种启动方式 (很小白的步骤):

方式一:在任意目录下输入如下命令:

启动redis的6382端口

命令:/usr/local/src/redis-2.8.3/src/redis-server /usr/local/src/redis-2.8.3/src/redis_6382.conf

查看启动结果

命令:ps -ef|grep redis

结果如下:

方式二:在/usr/local/src/redis-2.8.3/src下输入如下命令(在redis-server这个文件的目录下执行):

启动redis的6382端口

命令: ./redis-server ./redis_6382.conf

查看启动结果

命令:ps -ef|grep redis

结果如下:

step5:关闭指定实例端口6382

与启动redis命令方式类似:

在/usr/local/src/redis-2.8.3/src下输入如下命令:

命令:./redis-cli -p 6382 shutdown

查看启动结果

命令:ps -ef|grep redis

执行结果如下(6382端口已关闭)

相关推荐

  1. Redis相关知识

    2024-04-13 18:28:03       63 阅读
  2. Redis相关知识汇总

    2024-04-13 18:28:03       29 阅读
  3. redis 相关知识

    2024-04-13 18:28:03       41 阅读
  4. 5、Redis 缓存设计相关知识

    2024-04-13 18:28:03       34 阅读
  5. Redis相关

    2024-04-13 18:28:03       39 阅读
  6. Redisredis面试相关积累

    2024-04-13 18:28:03       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 18:28:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 18:28:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 18:28:03       87 阅读
  4. Python语言-面向对象

    2024-04-13 18:28:03       96 阅读

热门阅读

  1. 数据仓库—大数据建模

    2024-04-13 18:28:03       37 阅读
  2. 计算器1.0版

    2024-04-13 18:28:03       35 阅读
  3. Elasticsearch的倒排索引是什么?

    2024-04-13 18:28:03       31 阅读
  4. 思维题,LeetCode 2923. 找到冠军 I

    2024-04-13 18:28:03       42 阅读
  5. (32)4.12 作业题

    2024-04-13 18:28:03       39 阅读
  6. 猴子选大王(循环单链表)

    2024-04-13 18:28:03       37 阅读
  7. vue this.$set()、this.$delete使用方法

    2024-04-13 18:28:03       40 阅读