前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式缓存Redis高级应用实战之为什么要用缓存机制

分布式缓存Redis高级应用实战之为什么要用缓存机制

原创
作者头像
艾编程
修改2020-06-09 17:17:41
5070
修改2020-06-09 17:17:41
举报
文章被收录于专栏:艾编程艾编程

今天为大家分享一个系列的课程,这个也是我们的艾编程创始人/VIP教学负责人Gavin老师亲自分享一个系列的课,在艾编程官网播放特别高,而且在网站的好评率也是特别的高!今天就为大家分享这个课程!

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作为单线程模型为什么效率还这么高?

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服务安装及常用命令解析

代码语言:javascript
复制
# 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就是关闭不限制#启动Redisredis-server redis.conf

Redis五大数据类型

  • string
代码语言:javascript
复制
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:对象
代码语言:javascript
复制
# 比如一个对象,这个一般在购物车中使用比较多user {  name: icoding  age: 18  sex: male}hset user name icoding age 18 sex maletype userhget user namehgetall user
  • list:栈
代码语言:javascript
复制
# 做管道通知lpush userList 1 2 3 4 5lpop userListrpop userList
  • set:集合
代码语言:javascript
复制
sadd userSet 1 2 3 4 5 6 5 4 3 2 1smembers userSetsrandmember userSet 2 #随机展示两个spop userSet 2 #随机取两个 可以做抽奖
  • zset:带有一个数据标签的集合
代码语言:javascript
复制
zadd za1 10.99 apple 20.11 peach 40.89 banana 30.80 pear 50.79 cherryzrange za1 0 -1 withscores
  • GEO
代码语言:javascript
复制
# 在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高级应用实战之持久化系列的课程,欢迎大家关注哦!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今天为大家分享一个系列的课程,这个也是我们的艾编程创始人/VIP教学负责人Gavin老师亲自分享一个系列的课,在艾编程官网播放特别高,而且在网站的好评率也是特别的高!今天就为大家分享这个课程!
  • 1. 什么是Redis
  • 2. 为什么使用内存缓存数据库
    • Ehcache
      • Memcache
        • Redis
        • 3、Redis作为单线程模型为什么效率还这么高?
          • 4. Redis服务安装及常用命令解析
            • Redis服务安装及常用命令解析
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档