Redis
文章内容主要参考b站 运维实战课程 的redis视频:redis的课程介绍_哔哩哔哩_bilibili
简介
1.Redis是一个缓存数据库,主要是做缓存。什么是缓存?也就是缓冲存储,也可以理解为挡箭牌,对后面的一个保护—般放在mysql/oracle等数据库前面,对数据库进行一个保护。用户请求数据时候,第一次先请求redis,redis里没有,就请求后台mysqal数据库,返回数据时候会存放到redis里一份缓存起来,当下一次请求同样数据时候,就可以直接青求redis拿到数据,防止了对数据库的频繁访问,减轻后台数据库的压力
2.Redis是一种内存型的nosql数据库,一般是用来缓存加速的,并且能够支持数据持久化存储的设置,可以将数据持久化到硬盘里面3.Redis存储数据的方法是以key-value的形式
4.Redis数据类型支持字符串、列表、哈希等多种类型
Redis的源码编译安装
安全前的环境准备:
Centos7 关闭防火墙 关闭selinux 配置好阿里yum仓库
1.安装编译工具
yum install -y vim lrzsz gcc gcc-c++ make cmake tar openssl openssl-devel
2.解压提前下载好tar.gz源码包
tar -zxvf redis-6.2.13.tar.gz -C /usr/local/ //解压
mv /usr/local/redis-6.2.13 /usr/local/redis
cd /usr/local/redis
make && makeinstall
redis-server -v
cp redis.conf /etc/
//如果系统都一样,没必要每台都编译安装,在一台上编译安装后,只需将编译好的二进制文件((/usr/local/ bin/redis-*)拷贝到其他服务器即可
配置优化
cp /etc/redis.conf /etc/redis.conf.bak //备份文件
sed -i '/^#/d;/^$/d' /etc/redis.conf //删除注释空行
vim /etc/redis.conf //修改如下参数
bind 0.0.0.0
port 6379
dir /data/redis
requirepass redispwd //添加
pidfile "redis.pid"
logfile "redis.log"
daemonize yes
1.启动
mkdir -p /data/redis
redis-server /etc/redis.conf
netstat -tunlp | grep 6479
cat /data/redis/redis.log //查看日志 内存尽量2G以上
2.修改文件
vim /etc/security/limits.conf
* - nofile 65535 //添加
vim /etc/sysctl.conf
net.core.somaxconn = 10240
vm.overcommit_memory = 1
sysctl -p //使上述配置生效
3.配置系统
vim /usr/lib/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
基本操作
1.redis-cli使用和认证登录
redis-cli -h ip //无密码
redis-cli -a password //登录+认证
2.redis常用数据类型
字符串
列表、集合
hash、发布和订阅
3.redis字符串操作
set name xux //增加key并赋值
keys * //显示所有的key
get name //获取key的值
set name xuxu //重新给key赋值
del name //删除key
//大小写问题
命令不区分大小写
key区分大小写
set name ccc
set Name xxx
//非交互式操作redis
redis-cli -a password set name xuxuxu
redis-cli -a password get name
//使用shell批量写入数据并获取
for i in $(seq -w 10);do redis-cli -a 123456 set name${i} test${i};done
4.redis列表和集合的基本操作
4.1 redis列表
特点:列表是有顺序的 可写入重复的数据
如:['s1','s2','s3'...]
rpush names s1 //依次在列表右侧逐步添加数据
rpush names s2
rpush names s3
['s3','s2','s1'...]
lpushu names2 s1 //左侧逐步添加数据
lpushu names2 s2
lpushu names2 s3
lrange names 0 2 //读取第1到第3个列表值
lrange names 0 -2 //读取第1到倒数第2个列表值
LLEN names //列出列表的长度
LREM names 1 s1 //删除列表names中一个s1
LREM names 0 s2 //删除列表names中所有的s2
lpop names //左弹出
rpop names //右弹出
4.2 redis集合
特点:无顺序的、不重复的
sadd a a1 //创建集合a并添加元素
sadd a a2
sadd a a3
SMEMBERS a //列出集合中的所有元素
srem a a1 //删除集合中元素a
spop a //集合随机弹出一个元素
SISMEMBER a a1 //判断元素是否在集合里 0代表不在,1代表在
5.redis哈希和订阅类型基本操作
5.1.hash类型数据操作
Hash 写入
hset haxi name ha //创建一个hash名字haxi
hset haxi laocation beijing
hset haxi age 18
hset haxi sex man
hash获取
HGETALL haxi //获取hash名字里的所有key value对
HGET haxi name //获取hash名字里的单个key的值
Hash删除
HDEL haxi age //删除hash名字的单个key
DEL haxi //删除整个hash
hash批量删除
hmset haxi name hx666 age 20 location beijing sex boy
5.2.redis的发布订阅
subscribe fabu //订阅fabu频道
public fabu "name shi,age 20,sex boy" //往频道发布数据,订阅可以收到发布的消息
不同数据库切换和运维监控命令
1.数据库切换
//查看redis默认库
grep databases /etc/redis.conf
//redis数据库的切换
select 0
select 1
//不同的数据库是独