Redis学习笔记
Redis
一.Redis简介
Redis 是一个开源(BSD 许可)的内存中数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis 提供数据结构,例如字符串、哈希、列表、集、带有范围查询的排序集、位图、hyperloglog、地理空间索引和流。Redis 具有内置复制、Lua 脚本、LRU 逐出、事务和不同级别的磁盘持久性,并通过 Redis Sentinel 提供高可用性,并使用 Redis Cluster 进行自动分区。
可以对这些类型运行原子操作,例如追加到字符串;递增哈希中的值;将元素推送到列表;计算集交集、并集和差分;或者在排序集中获得排名最高的成员。
Redis 可以通过定期将数据集转储到磁盘或将每个命令附加到基于磁盘的日志来持久保存数据。
Redis 支持异步复制,具有快速无阻塞同步和自动重新连接,并在网络拆分时进行部分重新同步。
二.在linux上安装redis
# ubuntu/Debian安装方法
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg # 下载密钥
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis
# centos yum 方式安装redis
sudo yum install epel-release
sudo yum update
然后安装Redis数据库:
sudo yum -y install redis
安装好后启动Redis服务即可:
sudo systemctl start redis
这里同样可以使用redis-cli进入Redis命令行模式操作。
需要修改配置文件,路径为/etc/redis.conf
vi /etc/redis.conf
需要修改的地方:
首先,注释这一行:#bind 127.0.0.1
另外,推荐给Redis设置密码,取消注释这一行并设置密码:#requirepass foobared
然后重启Redis服务,使用的命令如下:
sudo systemctl restart redis
# 源码编译redis
https://redis.io/download/ # 下载地址
tar -zxvf redis-xxxx.tar.gz # 解压下载的redis压缩包
yum install gcc-c++ -y # 安装编译工具
gcc -v #查看GCC版本
cd redis-x.x.x && make && make install # 切换到源码路径下进行编译 ,或者是可以指定你向要存放redis的路径 make install PREFIX=/usr/local/redis/
# 如果是编译好的二进制执行文件放到对应的bin目录下,那么可以直接 redis-server 启动对应的redis
# 后台模式启动redis,需要修改redis配置文件当中的daemonize字段为yes,修改完成之后重新启动服务
# 登录redis
redis-cli -h 192.168.10.20 -p 6379 # 远程连接redis,进入之后,如果是之前设置过redis的密码,那么使用auth 密码 进行认证
# windows 上安装redis,官方是不支持windows的,但是可以安装WSL2来运行linux的二进制包
To install Redis on Windows, you'll first need to enable WSL2 (Windows Subsystem for Linux). WSL2 lets you run Linux binaries natively on Windows. For this method to work, you'll need to be running Windows 10 version 2004 and higher or Windows 11
三.怎么升级redis
注意,在看本教程前,请先自行备份配置文件以及数据。
如果持久化用的是rdb,备份.rdb文件,默认叫dump.rdb,如果你更改为其他名字,请自行查看配置,你的.rdb叫什么。完成本教程后,把.rdb文件放入redis的启动目录即可。不知道启动目录,就在redis-cil 命令行输入config get dir查看
如果持久化用的是aof,备份.aof文件,默认叫appendonly.aof
本教程写的时候是redis版本是 redis-6.0.9 ,如果高于此版本或者低于此版本,目录结果不一样,请安装redis-6.0.9 版本,把文中的 redis-X.X.X 替换为 redis-6.0.9
系统版本
如果是通过 apt-get install redis-server 方式安装的 redis ,可以输入 apt-get remove --purge redis-server 进行redis的卸载操作,输入此命令会问你是否卸载,输入 Y 确认卸载 redis 。
然后输入 redis-server -v 查看是否卸载完成,如果出现提示 Command 'redis-server' not found 说明卸载成功。
# 卸载redis
apt-get remove --purge redis-server
# 卸载之后查看redis版本信息
redis-server -v
# 安装编译工具gcc
检查是否安装了 gcc ,输入 gcc --version 进行查看是否安装了 gcc ,如果出现 Command 'gcc' not found,but can be installed with: apt install gcc ,则说明没用安装 gcc,需要输入 apt install gcc 进行安装。然后再次输入 gcc --version 查看是否安装成功
然后进入 /usr/local 目录下载 redis 最新安装压缩包,安装完成后输入 ls 可以查看到下载成功的文件 redis-x.x.x.taz.gz。去 redis官网 查看下载链接以及最新版本。
cd /usr/local
# 进入 /usr/local 目录
wget https://download.redis.io/releases/redis-X.X.X.tar.gz
# 下载最新的 redis ,此处我用 X.X.X 代替,因为 redis 是一直在更新的,所以你自己去官方查看
ls # 看到有 redis-x.x.x.taz.gz ,说明下载成功
解压安装redis
然后解压 redis-x.x.x.taz.gz ,输入 ls 查看解压后的目录 redis-x.x.x ,然后进入 redis-x.x.x 目录,输入 make 进行编译,编译完成后 进入 src 目录,输入 make install 进行安装
tar xzf redis-x.x.x.taz.gz
# 解压压缩包
ls
# 查看解压后的目录 redis-x.x.x
cd redis-x.x.x
# 进入解压后的 redis-x.x.x 目录
make
# 进行编译,此处时间可能会有点久
cd src && make install # 自行切换下载的源码路径
# 进入src 目录并进行安装
# 出现下面显示,说明安装成功
复制配置文件(如果是有原来的配置文件,记得保存一份,下面是对配置文件以及启动脚本做调整)
然后创建 /etc/redis 目录,把 /usr/local/redis-X.X.X/redis.conf 文件复制到 /etc/redis/redis.conf ,复制完成后,再把 /usr/local/redis-.X.X.X/utils/redis_init_script 文件复制到 /etc/init.d/redis
mkdir -p /etc/redis
# 创建 /etc/redis 目录
cp /usr/local/redis-X.X.X/redis.conf /etc/redis/redis.conf
# 把配置文件复制到 /etc/redis 目录下
cp /usr/local/redis-.X.X.X/utils/redis_init_script /etc/init.d/redis
# 把启动脚本复制到 /etc/init.d 目录下,通常都以d结尾表示是后台自启动服务
然后进行 redis配置文件设置
# 把 daemonize 设置为 yes ,因为redis 默认不开启守护进程模式
sed -i 's/daemonize no/daemonize yes/g' /etc/redis/redis.conf
# 如果要开启远程访问,就进行修改,* 代表任何地址都能访问,redis 默认是
# 只能本地访问,不过不想任何地址都能访问,就把 * 改成你的IP地址
sed -i 's/bind 127.0.0.1/bind */g' /etc/redis/redis.conf
# 此命令是设置redis密码设置成123456,redis默认是没有密码的。
# 如果你不想设置密码,可以不输入此命令设置密码(防止五认证登录redis,建议还是设置密码认证)
sed -i 's/# requirepass foobared/requirepass 123456/g' /etc/redis.conf
#最后设置开机自启redis以及启动redis服务
update-rc.d -f redis defaults
# 设置开机执行脚本,也就是添加开机自启
service redis start
# 启动redis服务
redis-server -v
# 查看redis版本号,验证一下是否启动成功
ps -ef | grep redis
# 也可以输入此命令查看redis是否启动成功
错误与解决办法
遇到的错误解决方案:
如果遇到权限不足,切换成 root 用户或者命令加上 sudo
输入 redis-server 报错 bash: /usr/bin/redis-server: No such file or directory
解决方案
1、重启一下服务器。
2、或者建立软连接
ln -s /usr/bin/redis-server /usr/local/bin/redis-server
3、或者添加环境变量path
四.redis-cli当中的一些基础命令
# 将标准输出内容输出到文件当中
redis-cli --raw INCR mycounter
# 远程连接redis服务器并执行命令,类似于mysql外部执行命令
$ redis-cli -h redis15.localnet.org -p 6390 PING
# 对于有密码的情况,需要使用-a参数指定对应的密码
$ redis-cli -a myUnguessablePazzzzzword123 PING
# it's possible to send a command that operates on a database number other than the default number zero by using the option
# redis-cli默认操作的是0号数据库,如果是需要操作其他数据库,那么就需要使用 -n <dbnum> 指定对应执行的数据库
$ redis-cli FLUSHALL
OK
$ redis-cli -n 1 INCR a
(integer) 1
$ redis-cli -n 1 INCR a
(integer) 2
# 使用特定的格式去连接redis数据库 -u <uri>redis://user:password@host:port/dbnum
$ redis-cli -u redis://LJenkins:p%40ssw0rd@redis-16379.hosted.com:16379/0 PING
PONG
# redis 默认是使用 TCP进行连接,如果是使用SSL或者是TLS的方式进行连接,可以设置对应的证书
# By default, uses a plain TCP connection to connect to Redis. You may enable SSL/TLS using the option, along with or to configure a trusted root certificate bundle or directory.redis-cli--tls--cacert--cacertdir
# redis-cli 执行文件当中的内容
$ cat /tmp/commands.txt | redis-cli
OK
# 在redis-cli 当中连接其他的数据库
127.0.0.1:6379> CONNECT metal 6379
metal:6379> PING
PONG
# 使用tab键补齐对应的命令
127.0.0.1:6379> Z<TAB>
127.0.0.1:6379> ZADD<TAB>
127.0.0.1:6379> ZCARD<TAB>
五.关于命令的学习,可以参照redis官方文档
# 中文文档
http://redis.cn/commands
# 英文文档
https://redis.io/docs/
版权申明
本文系作者 @Tis-FYM 原创发布在Tis-FYI站点。未经许可,禁止转载。
评论