缓存中间件Redis必知必会

这篇具有很好参考价值的文章主要介绍了缓存中间件Redis必知必会。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言!

前言:
本文是对redis的基本用法操作的整理。
如果需要在linux环境中搭建一个redis服务参考:
Linux环境下搭建使用缓存中间件Redis
如果需要掌握redis的常考知识点参考:
缓存中间件Redis常考知识点

一 十大数据类型

  • 1.String 字符串
 hello world
  • 5.List 列表
[A>B>C>D]
  • 6.Set 集合
{A<B<C}
  • 7.Sorted Set 有序集合
{A:1,B:2,C:3}
  • 4.Hash 哈希表
{a:"hello",b:"world",c,"you"}
  • 2.BitMap 位图
01100112121212
  • 3.BitField 位域
{7912}{121321}{2132213}
  • 8.Geospatial 地理空间
{A:(50.1,0.5)}
  • 9.Hyperlog 基数统计
01101101 0110111 01101101
  • 10.Stream 流 用于消息队列,消息持久化
{id1=time1.seq((a:"foo", a:"bar"))}

二 key的操作命令

  • keys * 查看所有key
  • exists keyname 判断key是否存在
  • type keyname 看key的类型
  • del keyname 删除
  • unlink keyname 非阻塞删除
  • ttl keyname 查看过期时间
  • expire keyname 秒 设置过期时间
  • move keyname dbindex [0- 15] 移动key到数据库db中
  • select dbindex 切换数据库
  • dbsize 查看key的数量
  • flushdb 清空当前库
  • flushall 通杀全部库

三 数据操作命令

string

命令不区分大小写,内容区分大小写

help @String
set keyname helloworld
get keyname

批量操作

mset keyname1 hello keyname2 world
mget keyname1 keyname2

list

双端链表结构,容量是2的32次方 - 1,主要功能是push/pop,用于栈,队列,消息队列等场景

lpush lista 1 2 3
rpush listb 11 22 33
//-1表示全部遍历
lrange lista 0 -1
lpop lista
rpop lista

set

集合运算

sadd seta a b c 1 2
sadd setb 1 2 3 a x
// 只属于seta,但是不属于setb的,输出 b c
sdiff seta setb
// 并集
sunion seta setb
// 交集 输出 1 2 a
sinter seta setb 

四 持久化

1. RDB

配置文件是redis.conf

# 十秒内有两次修改就会执行持久化保存
save 10 2
# 保存路径
dir /myredis/dumpfiles
# 文件名
dbfielname dump.rdb

手动保存
绝对不可以用save,要用bgsave
因为save会阻塞进程
bgsave使用fork的方式

fork:linux系统中,fork()会产生一个与父进程完全相同的子进程

2. AOF

保存操作命令

五 事务

单独的隔离操作
Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去执行其他客户端的请求的

没有隔离级别的概念
因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了。

不保证原子性
redis的事务不保证原子性,也就是不保证所有指令同时成功或者同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半回滚的能力

排他性
redis会保证一个事务内的命令依次执行,而不会被其他命令插入

怎么玩

  1. discard 取消事务
  2. exec 执行
  3. multi 标记开始
  4. unwatch 取消监控
  5. watch 监控

正常执行
multi -> exec
放弃事务
multi -> discard
全体连坐
编译失败会全部失败
冤头债主
编译成功,但运行失败,只会导致错误的一条不执行,其他条正常执行
watch监控
乐观锁
CAS check and set

注:
悲观锁:每次拿数据都认为别人会修改,所以每次拿数据都会上锁,这样别人想拿这个数据就会block直到它拿到锁
乐观锁:每次拿数据都认为别人不会修改,所以每次拿数据都不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新数据
乐观锁政策:提交版本必须大于记录当前的版本才能执行更新

六 管道

把一组命令写进一个文件里cmd.txt,使用管道命令打包执行

cat cmd.txt | redis-cli -a root --pipe

七 发布订阅

用于消息队列,专门的事交给专门的中间件做,了解即可

八 复制

复制就是 replica 即 主从复制
master以写为主,slave以读为主
当master数据变化时,自动将新的数据异步同步到其他slave数据库

目的

读写分离
容灾恢复
数据备份
水平扩容支撑高并发

用法

配从库不配主库
权限细节很重要,使用密码校验

基本操作命令文章来源地址https://www.toymoban.com/news/detail-680998.html

# 查看主从关系
info replication
# 配置文件中
replicaof 主库ip 主库端口
# 改换主库
slaveof 主库ip 主库端口
# 自己变更为主库
slaveof no one

到了这里,关于缓存中间件Redis必知必会的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 中间件系列 - Redis入门到实战(高级篇-多级缓存)

    学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 JVM进程缓存 Lua语法入门 实现多级缓存 缓存同步策略 传统的缓存策略

    2024年02月03日
    浏览(43)
  • 中间件系列 - Redis入门到实战(高级篇-分布式缓存)

    学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 Redis持久化 Redis主从 Redis哨兵 Redis分片集群 - 基于Redis集群解决单机R

    2024年02月03日
    浏览(39)
  • 【云原生进阶之PaaS中间件】第一章Redis-2.4缓存更新机制

            无论先操作db还是cache,都会有各自的问题,根本原因是cache和db的更新不是一个原子操作,因此总会有不一致的问题。想要彻底解决这种问题必须将cache和db的更新操作归在一个事务之下(例如使用一些分布式事务,或者强一致性的分布式协议)。或者采用串行化,

    2024年02月10日
    浏览(50)
  • 中间件redis的使用

    Java中的中间件配置体现在springboot的yml配置文件中。Springboot框架支持微服务和中间件和restful api远程服务的调用。中间件是Java web系统的中间层的服务系统的调用接口。Springboot的自动装配和约定大于配置机制初始化springcontext的容器空间和注册组件。使用容器管理服务注册对象

    2024年02月05日
    浏览(37)
  • 01.Redis中间件实战1

    字符串 需求:将用户信息存储至缓存中,实现每次前端请求获取用户个人详情时直接从缓存中获取。来演示字符串的写入与读取。 技术方案:为了实现这个需求,首先需要建立用户对象实体,里面包含用户个人的各种信息,包括ID、年龄、姓名、用户名及住址等, 然后采用

    2024年02月20日
    浏览(75)
  • 中间件: Redis安装与部署

    集群部署 启动6个redis节点 扩缩容 https://blog.csdn.net/lzb348110175/article/details/122168638 扩容: 添加两个节点, 第一个节点表示新节点,第二个节点表示集群中已有的任意一个节点 分配slot, 后面的节点是已有的节点 添加slave, 第一个为slave, 第二个为slave对应的master 缩容: 查看集

    2024年02月12日
    浏览(34)
  • Go重写Redis中间件 - Go实现Redis集群

    这章的内容是将我们之前实现的单机版的Redis扩充成集群版,给Redis增加集群功能,在增加集群功能之前,我们先学习一下在分布式系统中引用非常广泛的技术一致性哈希,一致性哈希在我们项目里就应用在我们Redis集群的搭建这块 详解一致性哈希 Redis集群需求背景 单台服务

    2024年02月13日
    浏览(30)
  • Go重写Redis中间件 - Go实现Redis持久化

    项目开发到这里,我们的下一步就是实现Redis的持久化落盘功能,Redis是一个内存型的数据库,在之前我们实现的单机版Redis如果把进程杀掉,我们通过GET、SET指令存储的数据都将不复存在,数据只存在内存的map里面,重启之后什么都没有了 我们现在的目标就是把用户发来的指

    2024年02月14日
    浏览(39)
  • Go重写Redis中间件 - Go实现Redis协议解析器

    Redis网络协议详解 在解决完通信后,下一步就是搞清楚 Redis 的协议-RESP协议,其实就是一套类似JSON、Protocol Buffers的序列化协议,也就是我们的客户端和服务端通信的协议 RESP定义了5种格式 简单字符串(Simple String) : 服务器用来返回简单的结果,以\\\"+\\\"开头,\\\"rn\\\"结尾的字符串形

    2024年02月15日
    浏览(39)
  • 常用中间件redis,kafka及其测试方法

    一、中间件的使用场景 引入中间件的目的一般有两个: 1、提升性能 产品架构中的性能设计: 常用的中间件: 1) 高速缓存:redis 基于内存,所以比mysql块(存在磁盘io) 为什么查询速度快? 单进程+IO多路复用去提高性能 基于内存 做缓存,极大缓解了数据库压力 非常适合

    2024年04月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包