Redis 源码安装和入门介绍

Linux下的redis源码安装

redis介绍

Redis (Remote Dictionary Server) 是开源的基于 ANSI C 实现的、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。

Redis 内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets),带有范围查询的 有序集合(sorted sets) , bitmaps, hyperloglogs 和 地理空间(geospatial) 索引。 Redis 内置了 复制(replication), LUA脚本(Lua scripting), LRU驱动事件(LRU eviction), 事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster)提供高可用性(high availability)
以上摘自:https://redis.com.cn/

注意:2024年3月20日,Redis Labs宣布从Redis 7.4开始,将原先比较宽松的BSD源码使用协议修改为RSAv2和SSPLv1协议。

下载源码

redis github: https://github.com/redis/redis
redis源码包:http://download.redis.io/releases/

注1:推荐从redis源码包下载,本篇以redis-7.2.4版本安装为例
注2:为保护redis配置文件不能被用户随便修改,同时避免创建太多用户,选中在root用户下安装

在这里插入图片描述

安装说明

# 下载软件包,解压并移动目标位置
[root@Ali ~]# wget http://download.redis.io/releases/redis-7.2.4.tar.gz
[root@Ali ~]# tar -xzvf redis-7.2.4.tar.gz
[root@Ali ~]# mv redis-7.2.4  /usr/local/redis

# 安装依赖
[root@QingYun redis]# sudo yum install build-essential
[root@QingYun redis]# sudo yum install gcc-c++
[root@QingYun redis]# sudo yum install tcl

# 编译安装redis
[root@Ali ~]# cd /usr/local/redis/
[root@Ali redis]# make
[root@Ali redis]# make install

# 查看redis版本
[root@Ali redis]# redis-server --version
Redis server v=7.2.4 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=610222ebf82018c4

# 检查安装正确性(注:可选操作,耗时比较久,生产环境下建议还是要执行的)
[root@Ali redis]# make test

注: 不建议使用‘PREFIX参数指定执行文件的安装位置
原因:假设 使用PREFIX=/usr/local/redis,则编译生产的redis-serverredis-client 等文件会生成到/usr/local/redis/bin/目录下。 但/usr/local/redis/bin/并不在系统默认$PATH环境变量中,这就导致无法执行运行redis的命令,还需要把该路径加到环境变量,反而更麻烦并且也不简洁。

入门介绍

目录结构

/usr/local/redis/目录下的包含了redis的全部源码,以下为目录结构的简单说明

目录/文件说明
depsHiredis 模块(轻量级访问redis的客户端),linenoise模块(命令行编辑辅助,能实现自动补全) ,字典的定义实现,sds的定义实现,redis封装的malloc,Lua等
src核心源码,大多功能都在这块实现,其中Redis自行实现了网络框架在这个目录中(ae_开头的文件),Redis并未使用libevent作为网络模块
tests测试模块,用来测试Redis的代码,大多测试用例和脚本都在这里面
utilsRedis的工具实现
redis.confRedis官方源码默认提供的配置文件
MakefileRedis C语言编译使用的Makefile,当然你也可以使用Cmake进行管理,当然Cmake支持的不是很好

配置文件

在目录/usr/local/redis下有一个redis.conf的配置文件。这里列举下比较重要的配置项

配置项名称配置项值范围说明
daemonizeyes、noyes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行
port指定 Redis 监听端口,默认端口为 6379
bind绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。
protected-modeyes 、no保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。
timeout300当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能
logleveldebug、verbose、notice、warning日志级别,默认为 notice
databases16设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到
rdbcompressionyes、no指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。
dbfilenamedump.rdb指定本地数据库文件名,默认值为 dump.rdb
dir指定本地数据库存放目录
requirepass设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH 命令提供密码,默认关闭
maxclients0设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。
maxmemoryXXX 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。

通常情况下我们都需要把redis当成服务在后台运行,因此这里通常需要改动几个配置项:

  • daemonize设置为yesredis默认在控制台上运行,一旦中断redis-server命令(Ctrl + C)或者退出控制台redis服务会自动关闭。建议改成 yes 启用守护运行方式。
  • protected-mode设置为no,同时也将bind注释:关闭保护模式和允许所有客户端链接,这样redis才能对外提供服务。
  • logfile设置为 log/redis_run.log:使用守护方式运行后,redis默认不会记录日志,建议配置开启日志

启动服务

# 查看redis使用说明
[root@Ali redis]# redis-server --help

# 启动redis服务(必须在root用户下)
[root@Ali redis]# redis-server redis.conf 
[root@Ali redis]# cat log/redis_run.log 
25171:C 11 May 2024 00:12:02.692 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
25172:C 11 May 2024 00:12:02.693 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
25172:C 11 May 2024 00:12:02.693 * Redis version=7.2.4, bits=64, commit=00000000, modified=0, pid=25172, just started
25172:C 11 May 2024 00:12:02.693 * Configuration loaded
25172:M 11 May 2024 00:12:02.694 * monotonic clock: POSIX clock_gettime
25172:M 11 May 2024 00:12:02.694 * Running mode=standalone, port=6379.
25172:M 11 May 2024 00:12:02.694 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
25172:M 11 May 2024 00:12:02.695 * Server initialized
25172:M 11 May 2024 00:12:02.695 * Loading RDB produced by version 7.2.4
25172:M 11 May 2024 00:12:02.695 * RDB age 17 seconds
25172:M 11 May 2024 00:12:02.695 * RDB memory usage when created 0.87 Mb
25172:M 11 May 2024 00:12:02.695 * Done loading RDB, keys loaded: 1, keys expired: 0.
25172:M 11 May 2024 00:12:02.695 * DB loaded from disk: 0.000 seconds
25172:M 11 May 2024 00:12:02.695 * Ready to accept connections tcp


# 查看redis服务(方式1)
[root@Ali redis]# ps -aux | grep redis
root     25172  0.0  0.1 239328  3420 ?        Ssl  00:12   0:00 redis-server 127.0.0.1:6379
root     25183  0.0  0.0 112816   984 pts/2    S+   00:12   0:00 grep --color=auto redis
# 查看redis服务(方式2) 
[root@Ali redis]# netstat -tunple | grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      0          12747989   25172/redis-server  
tcp6       0      0 ::1:6379                :::*                    LISTEN      0          12747990   25172/redis-server  
[root@Ali redis]# 

# 使用redis服务(可以在非root用户下使用)
[wengjh@Ali redis]$ redis-cli 
127.0.0.1:6379> get hostname
(nil)
127.0.0.1:6379> set hostname "aliyun"
OK
127.0.0.1:6379> get hostname
"aliyun"

# 插入redis 配置
[wengjianhong@Ali redis]$ redis-cli 
127.0.0.1:6379> CONFIG GET daemonize
1) "daemonize"
2) "yes"
127.0.0.1:6379> CONFIG GET logfile
1) "logfile"
2) "log/redis_run.log"
127.0.0.1:6379> CONFIG GET *

# 关闭redis服务
127.0.0.1:6379> SHUTDOWN
not connected> 

其他命令

Redis的命令有很多,网上也有很多好的教程,这里没有打算也没有必要一一介绍。以下是几个比较好用的网站

Redis教程:

Redis命令参考:

在这里插入图片描述

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值