Blogger Information
Blog 6
fans 0
comment 0
visits 7371
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
什么是Redis分布式缓存,为什么需要缓存机制
艾编程
Original
1656 people have browsed it

今天为大家分享一个系列的教程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作为单线程模型为什么效率还这么高?

1841971-20200513150415091-1901142167.png

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 6379pidfile /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 5lpop userList
rpop userList

set:集合

sadd userSet 1 2 3 4 5 6 5 4 3 2 1smembers 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”或者“分布式缓存”,看本期课程的视频+图文教程,还能收获更多哦! 


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post