分布式缓存Redis高级应用实战:为什么要用缓存机制
Posted icodingedu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式缓存Redis高级应用实战:为什么要用缓存机制相关的知识,希望对你有一定的参考价值。
今天为大家分享一个系列的教程Redis高级应用实战分布式缓存,今天文章内容概要:1、那么分布式缓存为什么要用Redis,什么是redis,2、为什么要用缓存机制,3、而Redis作为单线程模型为什么效率还这么高?4、Redis服务安装及常用命令解析
1. 什么是Redis
-
NoSQL
-
分布式缓存中间件
-
key-value存储
-
提供海量的数据存储访问
-
所有数据放在内存中,读取速度非常快
-
非关系型,分布式、开源,支持水平扩展
2. 为什么使用内存缓存数据库
因为在我们的基础架构,我们的数据库一般都是第一节点(主从、MMM、MHA)
一遍导致数据库缓慢或宕机的都是查询导致的,update、delete,80%的SQL都是查询,如果能够将这80%SQL抽离到缓存中;
Redis VS Memcache VS Ehcache
-
Ehcache
-
不支持集群,单点
-
不支持分布式,存储容量不支持扩展
-
基于Java开发的,被apache认证
-
基于JVM缓存的
-
简单、轻巧、方便(广泛的应用于hibernate,Mybatis)
-
优点
-
缺点
-
Memcache
-
无法容灾
-
无法持久化
-
简单的key-value存储
-
内存使用率比较高
-
支持多核多线程
-
优点
-
缺点
-
Redis
-
单线程(不建议进行大数据量的存储)
-
单核(无法充分利用CPU多核性能,建议使用多实例)
-
丰富的数据结构
-
持久化:RDB、AOF
-
主从同步、故障转移(mysql;主从)
-
内存数据库
-
优点
-
缺点
3、Redis作为单线程模型为什么效率还这么高?
1、纯内存访问:数据存放在内存中,内存的响应时间是100纳秒
2、非阻塞式的I/O操作:Redis采用epoll作为I/O多路复用技术的实现
3、采用单线程避免了不必要的上下文切换和竞争条件
什么是多路复用
如果你是一个老师,有30个学生做一道题,做完需要检查
1、按顺序检查,A,B,C
2、你创建30个分身,来检查30个结果
3、谁做完了谁举手,A,B、C,D
4. Redis服务安装及常用命令解析
# redis下载解压后 yum -y install gcc-c++ make && make install # cd /usr/local/bin 将redis相关的命令安装进来 # 进入redis根目录对redis.conf进行修改 daemonize yes #后台执行 dir /usr/local/redis-6379 #工作目录 bind 0.0.0.0 #ip访问控制,这里是放开的意思 requirepass icoding #设置redis密码 port 6379 pidfile /var/run/redis_6379.pid #进程id存放文件 maxcliens 0 #客户端的最大连接数,默认0就是不限制 timeout 0 #客户端连接的超时时长,默认0就是关闭不限制 #启动Redis redis-server redis.conf
Redis五大数据类型
-
string
keys * #查看redis当前数据库所有的key-value,生成上不要用keys abc* set / setnx : 后者如果有数据就不生效,前者有数据就覆盖expire username # redis默认配置有16个DB数据库,可以增减flushdb #删除当前DB中所有数据flushall #删除所有DB中的数据# 如果要关闭这两个命令的rename-command FLUSHDB "" # rename-command FLUSHDB "icodingfloushdb"rename-command FLUSHALL ""
-
hash:对象
# 比如一个对象,这个一般在购物车中使用比较多 user { name: icoding age: 18 sex: male } hset user name icoding age 18 sex male type user hget user name hgetall user
-
list:栈
# 做管道通知 lpush userList 1 2 3 4 5 lpop userList rpop userList
-
set:集合
sadd userSet 1 2 3 4 5 6 5 4 3 2 1 smembers userSet srandmember userSet 2 #随机展示两个 spop userSet 2 #随机取两个 可以做抽奖
-
zset:带有一个数据标签的集合
zadd za1 10.99 apple 20.11 peach 40.89 banana 30.80 pear 50.79 cherry
zrange za1 0 -1 withscores
-
GEO
# 在Redis3.2版本后才支持 # 添加地理坐标 geoadd china:city 116.408 39.904 beijing 121.445 31.213 shanghai 113.265 23.108 guangzhou 114.109 22.544 shenzhen 108.969 34.285 xian 108.55 34.09 changan # 获得两个节点间的距离 geodist china:city shanghai beijing km # m、km、mi、ft # 搜一搜周边,摇一摇 georadiusbymember china:city beijing 1300 km withdist withcoord asc count 2
如果需要本期图文教程的视频教程,请关注“艾编程”公众号,回复关键词“Redis”或者“分布式缓存”,看本期课程的视频+图文教程,还能收获更多哦!
以上是关于分布式缓存Redis高级应用实战:为什么要用缓存机制的主要内容,如果未能解决你的问题,请参考以下文章
分布式缓存技术redis学习系列——redis高级应用(集群搭建集群分区原理集群操作)