大家好,我是陌溪前言Redis 是一个高性能的分布式内存数据库,在国内的公司也有着非常广泛的使用场景。因此,在面试过程中,关于 Redis 相关的知识点,也是经常被问到的。下面这题,就是之前面试的时候遇到过的,让我们一起来学习一下吧~Redis 有那些数据结构?以及它们的使用场景?Redis五种数据结构Redis 为我们提供了 5 种数据结构,分别是以下几种 ......
370
0
0
2022-12-09
前言一个服务器节点可以部署多个redis实例,每个实例都有独立的配置文件例如:如下配置include /opt/redis/data/tstest-9-99/redis_commom.conf port 29999 dir /opt/redis/data/ bind 30.1.3.29 dbfilename tstest-9-99.rdb pidf ......
384
0
0
2022-12-08
Reactor 模式它要解决什么问题呢?传统的 thread per connection 用法中,线程在真正处理请求之前首先需要从 socket 中读取网络请求,而在读取完成之前,线程本身被阻塞,不能做任何事,这就导致线程资源被占用,而线程资源本身是很珍贵的,尤其是在处理高并发请求时。而 Reactor 模式指出,在等待 IO 时,线程可以先退出,这样就不 ......
460
0
0
2022-12-08
文件入口:server.c##main配置初始化这一步表示Redis服务器基本数据结构和各种参数的初始化。在Redis源码中,Redis服务器是用一个叫做redisServer的struct来表达的,里面定义了Redis服务器赖以运行的各种参数,比如监听的端口号和文件描述符、当前连接的各个client端、Redis命令表(command table)配置、持 ......
469
0
0
2022-12-08
Memcached一共用到了3种套接字(即: TCP, UDP和NUIX域套 接字)UNIX Domain Socket 与 TCP/IP Socket 对比socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopb ......
352
0
0
2022-12-08
前言从 Memcached1.5 开始,实现了一个改良的 LRU 算法,也叫做分段 LRU(Segmented LRU)算法,新算法主要是为了更好的利用内存,并提升性能。包含了二个重要的线程:maintainer 线程、crawler 线程。maintainer线程每个 Slab-class 有一个 LRU,每个 LRU 又由四个子 LRU 组成,每个子 L ......
425
0
0
2022-12-08
Slab Allocatormemcached 默认情况下采用了 Slab Allocator 的机制分配和管理内存. 在该机制出现之前内存分配简单的通过 malloc 和 free 来管理所有的记录, 旧的方式会导致产生很多内存碎片, 加重机器管理内存的负担, 甚至有可能导致操作系统比 memcached 进程本身还慢, Slab Allocator 则解 ......
314
0
0
2022-12-08
入口文件: memcached.c入口函数:main()参数校验就直接略过初始化主线程的libeventmain_base = event_init(); 初始化stats信息在文本协议的memcached中,我们nc/telent后输入stats命令,会很快地输出一些当前memcached的信息的。这些就是stats信息。并不是输入stats的时候才遍历 ......
466
0
0
2022-12-08
Redis-HyperLogLog基于HyperLogLog算法,使用极小的空间完成巨量运算Redis 中HyperLogLog 基本使用常用命令PFADD key element [element …]: 将任意数量的元素添加到指定的 HyperLogLog 里面。PFCOUNT key [key …]: 计算hyperloglog的独立总数prmerge ......
357
0
0
2022-11-27
Redis主从复制为了避免单点Redis服务器故障,准备多台服务器,互相连通,将数据复制多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的,即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。互联网“三高”架构高并发高性能高可用:可用性目标99.999%,即每年服务器宕机时长低于315秒单机Red ......
377
0
0
2022-11-25
Redis事务redis事务就是一个命令执行的队列,将一系列预定义的命令包装成一个整体,在执行时,就按这个顺序依次执行,中间不会被打断或干扰事务的基本操作开启事务multi 作用: 设定事务的开启位置,从这句命令之后,后续所有的指令都会被加入事务队列,并不会立刻执行。执行事务exec 作用: 设定事务的结束位置,同时执行事务,返回事务队列里每条指令的执行 ......
453
0
0
2022-11-25
GEOGEO即地址信息定位,可以用来存储经纬度,计算两地距离,范围计算等。这意味着我们可以使⽤ Redis 来实现美团和饿了么「附近的餐馆」,微信摇一摇等功能了。常用APIGEOADD key logitude latitude member[ logitude1 latitude1 member1...]: 增加地理位置信息127.0.0.1:8100&g ......
361
0
0
2022-11-25
Redis-BitmapBitMap,即位图,是一个byte数组,用二进制表示,只能存储0和1,BitMap并不是一个特殊的数据结构,它实质上还是普通的字符串。1. 操作API由于BitMap本质上还是String, 所以我们可以使用get/set直接获取整个位图的内容,也可以使用提供的专门的getbit/setbit来按位处理命令含义getbit key ......
344
0
0
2022-11-25
Redis 发布订阅Redis 发布订阅可以用在像消息通知,群聊,定向推送,参数刷新加载等业务场景发布订阅模型有三个角色:发布者(Publisher)订阅者(Subscriber)频道(channel)每个订阅者可以订阅多个频道,发布者可以在某个频道里发布消息,订阅者会接受到自己订阅频道里发布的消息。相关命令(参考)publish channel messa ......
452
0
0
2022-11-25
Redis-Pipeline正常的Redis 命令的生命周期是 Client 给 Server 发一条命令,Server 执行后把结果反馈给 Client,但这个过程中, Client 和 Server 之间的通信会花费大量时间,pipeline 的思路就是每一次 Client 和 Server 通信不再是一次发一条命令(/结果)而是把一批命令打包传输给 S ......
485
0
0
2022-11-25