Redis从入门到实战:入门篇

前言

之前只是在项目简单使用了Redis(只是充当缓存层实现),对Redis的体系技术没深入了解,最近时间比较充裕,所以再次复习巩固Redis,然后打算写几篇博客记录以及分享所复习的Redis知识。

  1. Redis从入门到实战:入门篇
  2. Redis从入门到实战:实战篇
  3. Redis从入门到实战:进阶篇
  4. Redis从入门到实战:完结篇
Redis从入门到实战:入门篇
  1. Redis简介
  2. 为什么要用Redis?
  3. Redis的优点
  4. Redis的应用场景
  5. Linux Centos7安装Redis与Window10安装Redis
  6. Redis客户端介绍与使用
  7. Redis核心配置文件详解
  8. Redis Key命名规范
  9. Redis最常用的5种数据类型及其对应的命令
  10. Redis的性能测试

Redis简介

  1. Redis是一个由C语言编写的,开源的key-value存储系统,它支持存储的value类型相对更多,包括String、List、Set、Sorted Set和Hash,而且这些操作都是原子性的,又被其作者戏称为数据结构服务器。
  2. 它属于NoSQL(Not Only SQL)数据库中的键值(Key-Value)存储数据库,即它属于与MySQL和Oracle等关系型数据库不同的非关系型数据库。它与memcached类似,但是优于memcached。
  3. 为了保证效率,数据都是缓存在内存中。Redis可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

为什么使用Redis?

  1. 假如我们不使用Redis,那么用户每次发送请求的时候,服务器都会前往关系型数据库(MySQL,Oracle…)查询数据(不考虑其他缓存技术),每次往返数据库会消耗大量系统资源。如果用户并发量高的话,可能服务器就承受不了,就会宕机崩溃。
    Redis从入门到实战:入门篇_第1张图片
  2. 如果我们使用了Redis,那么用户每次发送请求的时候,先去查询Redis缓存,如果缓存中有想要的数据,就直接响应客户端。如果没有,再去查询关系型数据库,这样就能节省系统开销,如果再搭建Redis集群,那么就能应对大量的高并发场景。
    Redis从入门到实战:入门篇_第2张图片

Redis的优点

Redis之所以被广泛应用在缓存领域,则是因为它的优点:

  1. Redis是一款性能极高的非关系型数据库,Redis读的速度是110000次/s,写的速度是81000次/s,非常适合做缓存。
  2. 丰富的数据类型,Redis支持String、List、Set、Sorted Set和Hash数据类型操作,从而支持大量的应用场景。
  3. 原子性,Redis所有操作都是原子性的,不用担心并发安全问题,同时Redis还支持对几个操作全并后的原子性执行。
  4. Redis还支持publish/subscribe,通知,key过期等特性。

Redis应用场景

Redis支持String、List、Set、Sorted Set和Hash数据类型,适用于大量的应用场景。

  1. 缓存
    并发量高的网站都使用了Redis作为缓存层的实现,缓存不仅能够提升网站访问速度,还能大大降低数据库的压力。
    Redis提供了键过期功能(适用存储手机验证码),也提供了灵活的键淘汰策略,所以,现在Redis用在缓存的场合非常多。
  2. 计数器
    什么是计数器?如电商网站商品的浏览量、视频网站视频的播放数等。为了保证数据实时效,每次浏览都得给+1,并发量高时如果每次都请求数据库操作无疑是种挑战和压力。Redis提供的incr命令(自增命令)来实现计数器功能,内存操作,性能非常好,非常适用于这些计数场景。
  3. 分布式会话
    集群模式下,在应用不多的情况下一般使用容器自带的session复制功能就能满足,当应用增多相对复杂的系统中,一般都会搭建以Redis等内存数据库为中心的session服务,session不再由容器管理,而是由session服务及内存数据库管理。
  4. 分布式锁
    在很多互联网公司中都使用了分布式技术,分布式技术带来的技术挑战是对同一个资源的并发访问,如全局ID、减库存、秒杀等场景,并发量不大的场景可以使用数据库的悲观锁、乐观锁来实现,但在并发量高的场合中,利用数据库锁来控制资源的并发访问是不太理想的,大大影响了数据库的性能。可以利用Redis的setnx功能来编写分布式的锁,如果设置返回1说明获取锁成功,否则获取锁失败,实际应用中要考虑的细节要更多。
  5. 社交网络
    点赞、踩、关注/被关注、共同好友等是社交网站的基本功能,社交网站的访问量通常来说比较大,而且传统的关系数据库类型不适合存储这种类型的数据,Redis提供的哈希、集合等数据结构能很方便的的实现这些功能。
  6. 最新列表
    Redis列表结构,LPUSH可以在列表头部插入一个内容ID作为关键字,LTRIM可用来限制列表的数量,这样列表永远为N个ID,无需查询最新的列表,直接根据ID去到对应的内容页即可。
  7. 消息系统
    消息队列是大型网站必用中间件,如ActiveMQ、RabbitMQ、Kafka等流行的消息队列中间件,主要用于业务解耦、流量削峰及异步处理实时性低的业务。Redis提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统。另外,Redis不能和专业的消息中间件相比。

Linux Centos7安装Redis与Window10安装Redis

https://blog.csdn.net/weixin_44176169/article/details/104394202

Redis客户端介绍与使用

https://blog.csdn.net/weixin_44176169/article/details/105025327

Redis核心配置文件(redis.conf)

下面列举了一些常见配置,当然还有其他配置信息,可以查看安装目录下的redis.conf。

配置 作用 默认
port Redis访问端口,由于Redis是单线程模型,因此单机开多个Redis进程的时候会修改端口 6379
bind 如果bind选项为空或0.0.0.0的话,那会接受所有来自于可用网络接口的连接。 127.0.0.1
timeout 指定在一个client空闲多少秒之后就关闭它,0表示不管 0
daemonize 指定Redis是否以守护进程的方式启动 no
logfile 配置log文件地址,默认打印在命令行终端的窗口上 “”
databases 设置Redis数据库的数量,默认使用0号DB 16
save 把Redis数据保存到磁盘上,这个是在RDB的时候用的 save 900 1,save 300 10,save 60 10000
dbfilename dump的文件位置 dump.rdb
dir Redis工作目录 ./
slaveof 主从复制,使用slaveof让一个节点称为某个节点的副本,这个只需要在副本上配置 关闭
masterauth 如果主机使用了requirepass配置进行密码保护,使用这个配置告诉副本连接的时候需要鉴权 关闭
slave-read-only 配置Redis的Slave实例是否接受写操作,即Slave是否为只读Redis yes
requirepass 设置客户端认证密码 关闭
maxclients 设置同时连接的最大客户端数量,一旦达到了限制,Redis会关闭所有的新连接并发送一个"max number of clients reached"的错误 关闭,默认10000
maxmemory 不要使用超过指定数量的内存,一旦达到了,Redis会尝试使用驱逐策略来移除键 关闭
appendonly 是否开启AOF no
appendfilename AOF文件名称 appendonly.aof
requirepass 设置客户端认证密码 关闭

Redis Key命名规范

  1. Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,比如"me"的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值。
  2. key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找效率。
  3. key不要太短,如果太短会降低key的可读性。
  4. 在项目中,key最好有一个统一的命名规范(根据企业的需求),我们可以使用分段设计法来设计Key名称。

你可能感兴趣的:(Redis)