redis的基本使用

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: redis作为强大的缓存工具,相信在很多的项目都会用到,一旦redis出现问题时该怎样去处理呢,下面介绍redis的基本使用。

1.Redis常⽤数据类型

redis常用的数据类型主要有以下5种:

(1)Sting类型

存:set key value
取:get key 获得对应的value值

(2)list类型 :

存:lpush key values
取:lpush list1 1 2 3 4 5 
注:栈的数据结构是先进后出(后进先出)
lpush表示从左边开始进行压栈操作,取出的数据顺序和进栈的顺序刚好相反,
rpush表示从最右边开始进行压栈操作,取出数据的顺序和插入数据的顺序一致

(3)set无序集合

set集合不允许有重复的元素,如果有重复的,自动将重复的数据删除
存:sadd key values 
例:sadd list2 a b c 
取:smembers key 
例:smembers list2

(4)zset集合

zset有顺序,不能重复,会将插入数据时的数字作为排序的依据,默认进行升序的排列
存值:zset key score1 value1 score2 value2 score3 value3
取值:取出的数据是经过升序排列的没有重复的有序集合
zrange key 0 -1 升序输出
zrevrange key 0 -1 降序输出
删除:zrem key value

(5)hash数据类型

hash: key-fields-values(做缓存使用)
Hset :向hash中添加数据
Hget:从hash中取出数据

注:redis中的所有数据都是字符串,命令不区分大小写,key是区分大小写的,由于redis是单线程的,因此不适合保存内容大的数据,key/value,单个value的数据最⼤为512M。

2.Redis作为单线程模型为什么效率这么⾼
image.png

Redis是单线程模型为什么这么快:多路(多个⽹络连接)复⽤(复⽤同⼀个线程)
1、纯内存访问
2、⾮阻塞I/O:Redis采⽤epoll作为I/O的多路复⽤器实现
3、采⽤单线,避免了不必要的上下⽂切花和竞争

3. 如何实现Redis数据持久化
redis的持久化分为两种⽅式:RDB、AOF
3.1. RDB⽅式

Redis将内存中所有数据全量写⼊⽂件的⽅式
优势
  每隔⼀段时间进⾏备份,全量备份
  灾备简单,可以远程传输
  备份是会fork⼀个⼦进程,对当前进⾏数据访问的主进程不影响
劣势
  发⽣故障时,有可能或丢失最后⼀次要备份的数据
  ⼦进程进⾏数据备份时会复制内存数据导致内存瞬间膨胀两倍,如果复制的数据量很⼤就会
  导致CPU和内存负载很⾼产⽣卡顿
  Redis RDB备份的设置⽅式
      save 900 1   900内更新1次就触发RDB全量备份
      save 300 10
      save 60 10000
  如果RDB过程中出错,则redis停⽌写操作
      stop-writes-on-bgsave-error yes
  save 不会fork⼀个新进程,所以在save的过程中,主进程可能会卡住
  bgsave 会fork⼀个新进程,系统⾃动触发也是使⽤的bgsave

数据已经持久化到RDB⽂件,如果恢复?

  只需要把dump.rdb 复制到dir⽬录中,redis在启动的时候机会⾃动加载

3.2. AOF⽅式
AOF的特点

 以⽇志的形式来记录⽤户的请求写操作(特别像MySQL的binlog),读操作不会保存
 ⽂件是以追加的形式进⾏记录
 redis的aof恢复其实就是把追加的⽂件从头到尾全部执⾏⼀遍

优势:

AOF以秒为单位进⾏备份,丢失数据范围更⼩
log⽇志形式追加,如果磁盘满了会调⽤redis-check-aof⼯具进⾏⽂件的重写
当数据量太⼤的时候,redis会在后台⾃动重新AOF⽇志⽂件

劣势:

相同的key数据会有多份,AOF⽐RDB⼤的多
AOF⼀旦出现过问题,就会导致数据不完整

RDB(全量备份mysqldump)+AOF(增量备份binlog)最后组合使⽤

# AOF默认是不开启的
appendonly no | yes
# AOF的⽂件名,同样存在dir⽬录下
appendfilename "appendonly.aof"
# 同步策略
# appendfsync always 每次操作都会备份,性能差
appendfsync everysec # 每秒备份⼀次,推荐时间
# appendfsync no aof备份时不进⾏磁盘同步
# 重写aof⽂件时是否同步,no同步 ,yes不同步
no-appendfsync-on-rewrite no
# AOF⽂件重写机制:避免AOF⽂件越来越⼤,将key的历史轨迹整合只保留最后⼀个
# 当前⽂件的容量⽐上⼀次重写后多出100%,也就现在是之前的两倍
auto-aof-rewrite-percentage 100
# 当前⽂件⼤于64mb
auto-aof-rewrite-min-size 64mb
# 如果要触发重写,以上两个条件都要满⾜

重新的时候Redis也会从主进程fork⼀个⼦进程进⾏重写操作,所有和RDB的开销⼀样
AOF默认是不开启,如何你在Redis运⾏过程中开启AOF⼀定要注意不要直接开启后重启
如果AOF和RDB同时开启,Redis只读取AOF⽂件的内容
如何解决:在运⾏中修改appendonly 为 yes:config set appendonly yes

4. Redis内存管理之缓存过期机制
redis⾥定义key的时候set gavin EX 10,数据过期后只是你⽆法访问了,但不会直接删除,什么时候删除
(主动)定期删除

   redis默认会⼀秒10次巡检内存,将已经过期的数据进⾏删除
   可以设置主动频次:config get hz

(被动)惰性删除

   当客户端请求时,如果发现过期超时就进⾏删除并返回客户端⼀个nil

如果redis内存被占满(你的key都没有设置过期时间)

  # redis提供了⼀套缓存淘汰机制
  # maxmemory <bytes> //可以设置内存的可⽤⼤⼩,可以预留内存给操作系统,主从两台机器内存不⼀样⼤,设置成⼩的
  # redis提供了⼀套缓存淘汰机制
  # maxmemory-policy noeviction 这是默认,旧缓存永不过期,如果内存满了新缓存⽆法写⼊
  # allkeys-lru 当内存满时,有新缓存进⼊,将最少使⽤的旧缓存清除

5.Redis读写分离主从架构搭建
image.png

# 从机的单机安装参考前⾯
# 修改slave的redis.conf
# 主机连接
replicaof 127.0.0.1 6379
# 主机访问密码
masterauth icoding
# 主从复制过程中,从服务是否可以响应客户端请求
replica-serve-stale-data yes
# 从机只读
replica-read-only yes
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8月前
|
缓存 NoSQL Redis
[Nestjs] 使用redis的基础配置,以及基本使用的介绍
要在 NestJS 中使用 Redis,需要安装依赖npm install --save redis fastify-redis
251 0
|
4月前
|
存储 SQL NoSQL
Redis的安装及基本使用
Redis的安装及基本使用
|
6月前
|
NoSQL Linux Redis
[笔记]Redis入门-基本使用
[笔记]Redis入门-基本使用
|
9月前
|
消息中间件 存储 缓存
【Redis 系列】redis 学习三,redis 数据结构之 string 和 list 基本使用及熟悉
【Redis 系列】redis 学习三,redis 数据结构之 string 和 list 基本使用及熟悉
|
存储 NoSQL 算法
Redis的基本使用
1.Redis简介 (1)什么是Redis ①Redis是一个基于内存的key-value结构数据库 ②基于内存存储,读写性能高 ③适合存储热点数据(热点商品、资讯、新闻) ④Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件 ⑤它存储的value类型比较丰富,也被称为结构化的NoSql数据库。NoSql,不仅仅是SQL,泛指非关系型数据库。NoSql数据库 并不是要取代关系型数据库,而是关系型数据库的补充。
Redis的基本使用
|
存储 NoSQL Redis
Redis基本数据类型Zset(有序集合)基本使用
Redis基本数据类型Zset(有序集合)基本使用
|
NoSQL Redis
Redis基本数据类型Set(集合)基本使用
Redis基本数据类型Set(集合)基本使用
|
消息中间件 NoSQL Java
Redis基本数据类型 List(列表)基本使用
Redis基本数据类型 List(列表)基本使用
|
存储 NoSQL Redis
Redis基本数据类型 Hash(哈希)基本使用
Redis基本数据类型 Hash(哈希)基本使用
|
NoSQL 网络协议 测试技术
Redis 中 List 的基本使用 | 学习笔记
快速学习 Redis 中 List 的基本使用
67 0
Redis 中 List 的基本使用 | 学习笔记

热门文章

最新文章