Redis部署和基础命令

一、Redis基本概念

1.1 Redis简介

Redis(远程字典服务器) 是一个开源的、使用 C 语言编写的 NoSQL 数据库。
Redis 基于内存运行并支持持久化,采用key-value(键值对)的存储形式,是目前分布式架构中不可或缺的一环。

Redis服务器程序是单进程模型,也就是在一台服务器上可以同时启动多个Redis进程,Redis的实际处理速度则是完全依靠于主进程的执行效率。若在服务器上只运行一个Redis进程,当多个客户端同时访问时,服务器的处理能力是会有一定程度的下降;若在同一台服务器上开启多个Redis进程,Redis在提高并发处理能力的同时会给服务器的CPU造成很大压力。即:在实际生产环境中,需要根据实际的需求来决定开启多少个Redis进程。若对高并发要求更高一些,可能会考虑在同一台服务器上开启多个进程。若CPU资源比较紧张,采用单进程即可。

1.2 Redis的优点

1)具有极高的数据读写速度:数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到 81000 次/s;

2)支持丰富的数据类型:支持 key-value、Strings、Lists、Hashes、Sets 及 Sorted Sets 等数据类型操作;

3)支持数据的持久化:可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;

4)原子性:Redis 所有操作都是原子性的;

5)支持数据备份:即 master-salve 模式的数据备份。

1.3 使用场景

Redis作为基于内存运行的数据库,是一个高性能的缓存,一般应用在Session缓存、队列、排行榜、计数器、最近最热文章、最近最热评论、发布订阅等。
Redis 适用于数据实时性要求高、数据存储有过期和淘汰特征的、不需要持久化或者只需要保证弱一致性、逻辑简单的场景。

我们通常会将部分数据放入缓存中,来提高访问速度,然后数据库承担存储的工作。

1.4 适合放入缓存中的数据

●即时性。例如查询最新的物流状态信息。
●数据一致性要求不高。例如门店信息,修改后,数据库中已经改了,五分钟后缓存中才是最新的,但不影响功能使用。
●访问量大且更新频率不高,例如网站首页的广告信息,访问量大,但是不会经常变化。

1.5 Redis快速的原因

1)redis基于内存运行,数据操作都是内存中完成的;

2)数据读写采用单线程模式,避免了多线程切换的CPU性能消耗,同时也不用考虑各种锁的问题;

3)采用IO多路复用模型,可以使线程处理更多的网络连接请求,提高并发能力。

1.6 Redis数据类型

字符型(string): 普通字符串

哈希(hash): 键值对的 键值对

列表 (linked lists): 类似于 数组

集合(set): 无序

有序集合(sorted set): 排行榜

二、Redis安装部署

环境准备

#开机自动关闭防火墙
systemctl disable firewalld --now

#永久关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

修改内核参数

vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048

#vm.overcommit_memory:该配置项用于设置内存超额分配策略。
#当值为 0 时,表示内核会根据实际情况动态分配内存,但这可能导致内存超额分配,当系统内存不足时,可能会引发OOM(Out of Memory)错误。
#将其设置为 1 可以禁用内存超额分配,确保只有在内存充足的情况下才能进行内存分配。这对于确保系统稳定性和可靠性是有帮助的。

#net.core.somaxconn:该配置项用于设置系统中允许的最大挂起连接数。
#当系统接收到大量并发连接请求时,如果系统的连接队列已满,则新的连接请求会被拒绝。
#通过增加 net.core.somaxconn 的值,可以增加系统的连接队列大小,从而提高系统处理并发连接请求的能力。

sysctl -p
#刷新配置文件

安装redis

1)安装依赖
[root@centos7 ~]#yum -y install gcc jemalloc-devel
#安装依赖包

centos
[root@centos7 ~]#yum -y install gcc jemalloc-devel systemd-devel
#如果支持systemd需要安装下面包
ubentu
[root@ubuntu1804 ~]#apt -y install make gcc libjemalloc-dev libsystemd-dev


2)下载安装包
[root@localhost ~]#cd  /data
[root@localhost ~]#wget http://download.redis.io/releases/redis-5.0.7.tar.gz

3)解压
[root@centos7 ~]#tar xvf redis-5.0.7.tar.gz

4)编译安装
[root@centos7 ~]#cd redis-5.0.7/

[root@centos7 redis-5.0.7]#make PREFIX=/apps/redis install #指定redis安装目录


[root@centos7 redis-5.0.7]#make USE_SYSTEMD=yes PREFIX=/apps/redis install
#如果支持systemd,需要执行下面

5)配置变量
[root@centos7 ~]#echo 'PATH=/apps/redis/bin:$PATH' > /etc/profile.d/redis.sh
[root@centos7 ~]#. /etc/profile.d/redis.sh

6)准备配置文件及目录
[root@centos7 ~]#mkdir /apps/redis/{etc,log,data,run}
#创建配置文件、日志、数据等目录

[root@centos7 redis-5.0.7]#cp redis.conf /apps/redis/etc/
#源码包中自带 配置文件

7)准备用户 修改权限
[root@centos7 ~]#useradd -r -s /sbin/nologin redis

[root@centos7 ~]#chown -R redis.redis /apps/redis/
#设置目录权限
[root@centos7 ~]#ln -sv /apps/redis/bin/redis-* /usr/bin/
#设置软连接

8)准备service文件
[root@centos7 ~]#vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target


[Service]
ExecStart=/apps/redis/bin/redis-server /apps/redis/etc/redis.conf --supervised systemd
ExecStop=/bin/kill -s QUIT $MAINPID
#Type=notify 如果支持systemd可以启用此行
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755


[Install]
WantedBy=multi-user.target

9)启动redis
[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl start  redis

redis配置文件修改

vim /apps/redis/etc/redis.conf

bind 127.0.0.1
0.0.0.0               #69行 ,添加监听的主机地址,0.0.0.0表示监听任意地址
protected-mode no     
#89行,将本机访问保护模式设置no。如果开启了,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应
port 6379             #93行,Redis默认的监听6379端口
daemonize yes         #137行,设置为守护进程。后台启动
pidfile /apps/redis/run/redis_6379.pid
#159行,指定PID文件
logfile  /apps/redis/log/redis6379.log
#172行,指定日志文件
dir /apps/redis/data
#264行,指定持久化文件所在目录
requirepass abc123	 
#508行,增加一行,设置redis密码

ss -natp |grep redis

三、Redis基础命令

3.1 set和get命令

setget命令用于设置和获取键值对的

set用于存放数据

set key value [EX seconds] [PX milliseconds] [NX|XX]

#key 为键名
#value为键值
127.0.0.1:6379> set name cxk

get用于获取数据

127.0.0.1:6379> get name

3.2 keys 命令

keys命令用于查询键,支持通配符*?。

#先赋值
127.0.0.1:6379> set k1 1
127.0.0.1:6379> set k2 2
127.0.0.1:6379> set k3 3
127.0.0.1:6379> set k4 4
#查看当前数据库中所有键
keys *

127.0.0.1:6379> KEYS k*				
#查看当前数据库中以 k 开头的数据

127.0.0.1:6379> KEYS k?				
#查看当前数据库中以 k 开头后面包含任意一位的数据

127.0.0.1:6379> KEYS k??				
#查看当前数据库中以 k 开头 k 开头后面包含任意两位的数据

3.3 del命令

删除当前数据库的指定键。


127.0.0.1:6379> del k1

127.0.0.1:6379> get k1

3.4 exists命令

判断键是否存在,1表示键存在,0表示键不存在。

3.5 type命令

查看键的数据类型

3.6 expire 命令

已存在的键设置过期时间

3.7 ttl 命令

查看键的生命周期时间,-1表示永不过期,-2表示已过期。

3.8 rename 命令

重命名键名,会覆盖已存在的键的值。

#命令格式
rename 源key 目标key

3.9 renamenx 命令

重命名键名,如果新键已存在则不执行重命名操作即不会覆盖

#命令格式
renamenx 源key 目标key

3.10 dbsize 命令

统计当前库的键的数量

3.11  FLUSHALL

强制清空当前redis服务器所有数据库中的所有key,即删除所有数据,此命令慎用!

127.0.0.1:6379> FLUSHALL OK

#生产建议修改配置 /etc/redis.conf 
rename-command FLUSHALL ""
#rename-command 在6.2.4版淘汰了

3.11 SHUTDOWN

# 停止所有客户端

如果有至少一个保存点在等待,执行 SAVE 命令

如果 AOF 选项被打开,更新 AOF 文件

关闭 redis 服务器(server)

如果持久化被打开的话, SHUTDOWN 命令会保证服务器正常关闭而不丢失任何数据。

另一方面,假如只是单纯地执行 SAVE 命令,然后再执行 QUIT 命令,则没有这一保证 —— 因为在执行SAVE 之后、执行 QUIT 之前的这段时间中间,其他客户端可能正在和服务器进行通讯,这时如果执行 QUIT 就会造成数据丢失。

相关推荐

  1. Redis基本命令数据类型

    2024-07-10 04:04:05       38 阅读
  2. Redis基础命令集详解

    2024-07-10 04:04:05       24 阅读
  3. Redis基础命令详解

    2024-07-10 04:04:05       24 阅读
  4. redis基本命令

    2024-07-10 04:04:05       13 阅读

最近更新

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

    2024-07-10 04:04:05       3 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 04:04:05       3 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 04:04:05       2 阅读
  4. Python语言-面向对象

    2024-07-10 04:04:05       2 阅读

热门阅读

  1. android 7.0 tts文字转语音

    2024-07-10 04:04:05       9 阅读
  2. 离线升级docker中的某个镜像——以etcd为例

    2024-07-10 04:04:05       13 阅读
  3. 将pytorch 模型封装为c++ api 例子

    2024-07-10 04:04:05       9 阅读
  4. Rust: 关于Pin以及move前后分析

    2024-07-10 04:04:05       9 阅读
  5. LVS实验

    LVS实验

    2024-07-10 04:04:05      10 阅读
  6. 【Git】取消追踪多个文件或目录

    2024-07-10 04:04:05       9 阅读
  7. 环境变量Path

    2024-07-10 04:04:05       7 阅读
  8. 数据守卫者:sklearn中的异常点检测技术

    2024-07-10 04:04:05       9 阅读
  9. 概率解码:SKlearn中模型的概率预测指南

    2024-07-10 04:04:05       8 阅读
  10. 遇到的问题汇总

    2024-07-10 04:04:05       8 阅读