不能不学的Redis基础

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了不能不学的Redis基础脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

理论

工作原理:

不能不学的Redis基础

redis重要特性

1.速度快 c语言写的 代码优雅 单线程架构

2.支持多种数据结构 字符串,哈希,列表,集合,有序集合

3.丰富的功能 天然计数器 健过期功能(过期自动消失双11数据) 消息队列

4.支持客户端语言多 php,java,python

5.数据持久化 所有的数据都运行在内存中 支持2种格式持久化数据AOF RDB AOF&RDB(保存之后的数据,重启还在)

6.自带多种高可用架构 主从 哨兵 集群

redis应用场景

1.缓存-键过期时间 把session会话存在redis,过期删除 缓存用户信息,缓存MySQL部分数据,用户先访问redis,redis没有再访问mySQL 商城优惠卷过期时间

2.排行榜-列表&有序集合 热度/点击数排行榜 直播间礼物积分排行

3.计数器-天然支持计数器 帖子浏览数 视频播放数 评论数 点赞/踩

4.社交网络-集合 粉丝 共同好友 兴趣爱好 标签

5.消息队列-发布订阅 配合ELK缓存收集来的日志


安装redis

1.准备安装和数据目录

mkdir -p /data/soft mkdir -p /opt/redis_cluster/redis_6379/{conf,LOGs,pid}

2.下载redis安装包

cd /data/soft wget http://download.redis.io/releases/redis-5.0.7.tar.gz

3.解压redis到/opt/redis_cluster/,创建软链接

tar xf redis-5.0.7.tar.gz -C /opt/redis_cluster/ ln -s /opt/redis_cluster/redis-5.0.7 /opt/redis_cluster/redis

4.切换目录安装redis

cd /opt/redis_cluster/redis

编译并安装 make && make install

不能不学的Redis基础

5.编写配置文件

vim /opt/redis_cluster/redis_6379/conf/6379.conf

添加: bind 127.0.0.1 192.168.2.130 port 6379 daemonize yes piDFile /opt/redis_cluster/redis_6379/pid/redis_6379.pid logfile /opt/redis_cluster/redis_6379/logs/redis_6379.log databases 16 dbfilename redis.rdb dir /opt/redis_cluster/redis_6379 保存退出

6.启动当前redis服务(不打后面配置文件路径,以默认配置文件启动)

redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

7.关闭redis服务

redis-cli shutdown

8.登录redis

不能不学的Redis基础


redis基本操作命令

1.全局命令

KEYS *  #列出所有键值名,但在企业环境禁止使用(显示文件量大,占满内存)
DBSIZE  #查看有多少键值数
EXISTS	#查看键值是否存在
ExpIRE k2 20	#设置K2过期时间为20秒,20秒后k2自动取消
PERSIST k2		#取消k2的过期时间
TTL k2	#查看k2的生命周期
TYPE    #查看数据类型

不能不学的Redis基础

2.字符串类型:string

SET	k3 3		#创建键值
GET	k3			#查看键值
DEL	k2			#删除键值 
INCR k3			#键值k3为整数,递增加1
INCRBY k3 10  	#递增k3的量值10 
MSET k4 v4 k5 v5 k6 v6 k7 v7  	#批量创建键值
MGET k4 k5 k6 k7				#批量查看键值

不能不学的Redis基础

3.列表:list

RPUSH list1 1 2 3 4  #创建列表list1,值为1 2 3 4
RPUSH list1 5 6 7 8	 #在list1右侧添加5 6 7 8
LPUSH list1 0 		 #在list1左侧添加0
LRANGE list1 0  -1   #查看list1所有值
RPOP list1			 #删除右侧最后一个值
LPOP list1			 #删除左侧第一个值
LTRIM list1 0 2		 #仅保留前3位,其他值删除

4.哈希:hash

HMSET user:1000 username zhangsan age 17 job IT  #创建hash键值user:1000 
HGET user:1000 username				#查看键值中username参数
HGET user:1000 age				#查看键值中age参数
HGET user:1000 job				 #查看键值中job参数
HMSET user:1000 tel 18866668888			 #添加值tel

不能不学的Redis基础

5.集合:set(集合不能有重复,列表可以)

SADD set1 1 2 3		#创建集合set1
SMEMBERS set1		#查看集合set1
SADD set1 1 4		#为集合set1添加值1 4 ,但集合特性是去除重复,所以1无法再添加
SREM set1 1 4		#删除集合的值1 4
sadd set2 1 4 5		#创建第二个集合set2
SDIFF set1 set2		#求差集
SINTER set1 set2	#求合集(交集)
SUNION set1 set2	#求并集

1.redis持久化:

RDB:生成时间点快照,保存于硬盘 优点:速度快,适合做备份,能做主从复制,单开子进程进行rdb操作不影响主业务 缺点:会有部分数据丢失

AOF:记录所有写操作命令,通过再次执行这些命令还原数据 优点:最大程度保证数据不丢失 缺点:日志记录量太大

2.RDB配置:

登录redis redis-cli 保存命令 bgsave rdb

不能不学的Redis基础

修改配置文件:

vim /opt/redis_cluster/redis_6379/conf/6379.conf

添加:

save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。 save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。 save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照

3.AOF配置

vim /opt/redis_cluster/redis_6379/conf/6379.conf

添加: appendonly yes #启用AOF持久化 appendfilename “redis.aof” #指定AOF文件名 appendfsync everysec #每秒同步一次

4.重启redis

redis-cli shutdown redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

不能不学的Redis基础


Redis主存复制群集

环境:

服务器:192.168.2.130 从服务器:192.168.2.135

1.redis主从复制

为解决单点故障把数据复制到一个或多个副本副本服务器(从服务器),实现故障恢复和负载均衡

2.开启第二台服务器,安装redis

(1)把第一台服务器的redis安装目录,scp到第二台服务器上

scp -rp /opt/redis_cluster/ root@192.168.2.135:/opt

(2)在第二台服务器上,;make install安装redis

进入二进制文件目录 cd /opt/redis_cluster/redis 安装 make install vim /opt/redis_cluster/redis_6379/conf/6379.conf

修改配置:

bind 127.0.0.1 192.168.2.135 slaveof 192.168.2.130 6379 保存退出

(3)启动服务

redis-server /opt/redis_cluster/redis_6379/conf/6379.conf

(4)主服务器新建键值,测试从服务器自动同步

不能不学的Redis基础

验证:从服务器

不能不学的Redis基础

(5)从服务器在同步过程中,只能复制主数据库的数据,不能手动添加修改数据;

不能不学的Redis基础

如果从服务器非要修改数据,需要断开同步:

不能不学的Redis基础

再次验证:可以修改、创建数据

不能不学的Redis基础

脚本宝典总结

以上是脚本宝典为你收集整理的不能不学的Redis基础全部内容,希望文章能够帮你解决不能不学的Redis基础所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。