iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >redis 基础知识点汇总
  • 520
分享到

redis 基础知识点汇总

redis基础知识点汇总 2014-10-29 12:10:45 520人浏览 猪猪侠
摘要

本文涉及的内容参考下面的大纲,另外版本的问题一般都会指出来。 正文 1. 思维导图 简单了做了一个思维导图,详细内容往后看。 2. 详解 下面针对思维导图列出的大纲,展开说明。 2.1 常用的 5 种数据类型 Redis 是基于 C 语言

redis 基础知识点汇总

本文涉及的内容参考下面的大纲,另外版本的问题一般都会指出来。

正文

1. 思维导图

简单了做了一个思维导图,详细内容往后看。 在这里插入图片描述

2. 详解

下面针对思维导图列出的大纲,展开说明。

2.1 常用的 5 种数据类型

Redis 是基于 C 语言开发的, 不同的数据类型都对应有不同的数据结构, 因为本人对 Java 比较熟悉, 如果用 Java 中的数据结构描述这下面这些数据类型,会是如下这样:

  • string 字符串 string 是最简单的数据结构, 内部表示就是一个 字符数组 另外, redis 的字符串是动态字符串,有点类似 Java 的 ArrayList, 感兴趣的可以详细了解下。
  • list Redis 的 list 类似于 Java 中的 LinkedList, 因此 list 的插入和删除操作相对很快, 根据索引查询很慢。
  • hash Redis 的 hash 相当于 Java 中的 HashMap, 是一个无需字典, 内部存储为多个键值对。
  • set Redis 的 set 相当于 Java 中的 HashSet, 因此它的值是无序的,唯一的
  • sortedset sortedset 一方面保证了集合中元素的唯一性,另一方面通过给每个元素设置一个 score(作为排序的依据),实现了排序功能,

上面采用了类比的方式, 描述了 redis 的五种数据类型, 具体用 C 语言如何表示, 可以去下载源码了解一下。

2.2 常用的命令

2.2.1 数据的存储操作

下面是 5 种常用数据类型的部分常用操作指令,查询全部命令,请参考 redis 官网

  • string key 为 用户 id, value 为用户具体信息(用 JSON 串表示)

    • 保存或更新一个键值对: SET user_id user_info(json字符串)
    • 取出 key 对应的值:GET user_id
    • 删除一条数据: DEL user_id
  • list 存储一个用户列表, 列表元素为用户姓名

    • 将一个或多个值插入到列表头部 LPUSH user_list zhangsan lisi wangwu
    • 移出并获取列表的第一个元素 LPOP name
  • hash 存储用户购物车内容, 大 key 为 用户id, 小 key 为商品 id, value 为商品数量

    • 保存一个键-值对 HSET 用户id 商品id 商品数量
    • 删除一个哈希表字段 HDEL 用户id 商品id
  • set 存储用户信息, 存储内容为用户姓名, 用户姓名不能重复

    • 向集合添加一个成员 SADD name zhangsan
    • 移除并返回集合中的一个随机元素 SPOP name
  • sortedset 存储内容同 set 集合一样, 但是增加一个条件,按照年龄排序,

    • 向有序集合添加一个或者更新已存在成员分数 ZADD name 22 zhangsang
    • 返回有序集中,成员的分数值 ZSCORE name zhangsan

上面提到的应用示例只是举例, 是否合理自行判断。

2.2.2 其他运维命令
  • keys 一次性查询满足条件的所有key
  • scan redis 2.8 版本加入的指令,可以通过游标分步查询,不会阻塞线程
  • info 查看内存
  • select db-index 选择对应的库, redis 默认 database 为 16, 因此 db-index 为 0-15
  • flushdb 清空数据库

2.3 数据持久化方式

所谓持久化就是把数据保存到磁盘上,redis 数据持久化方式有两种 rdb 和 aof。

详情请参考之前的两篇文章:

Redis 数据持久化 - RDB 和 AOF 简单介绍

Redis 持久化方式 - RDB 和 AOF 配置及 rewrite 机制

2.4 缓存淘汰策略

上面的思维导图中列出的 redis 的缓存淘汰策略有 6 种,redis 4.0 增加两种。

详情请参考前面的文章:

redis 的 maxmemory 配置以及 缓存淘汰策略

2.5 redis 高性能的原因

纯内存操作 Redis 将数据放在内存中,内存中的数据存取更快

非阻塞I/O Redis 使用 epoll 作为 I/O 多路复用技术的实现,在加上Redis自身的事件处理模型将epoll中的链接、读写、关闭都转换为事件,不在网络I/O上浪费过多的时间;

单线程 避免了线程切换和产生的消耗。

2.6 redis 事务

类似关系型数据库 Mysql 那样, 具有事务操作 begin, commit, rollback 指令操作, redis 也有类似的事务操作指令, 分别是 multi, exec, discard,

  • multi 表示事务的开始
  • exec 表示事务的执行
  • discard 表示丢弃事务

在执行 exec指令之前,执行的所有的指令都会缓存在一个事务队列中, 一旦执行了 exec指令后,才会开始执行整个事务队列的所有指令,最后返回所有指令的运行结果。

> multi
OK
> incr num
QUEUED
> incr num
QUEUED
> exec
(integer)1
(integer)2

另外,redis 事务在遇到指令执行失败时,不会影响后面的指令执行,但是 redis 提供了一个 discard指令, 用于 丢弃 事务缓存队列中 剩余的所有指令

2.7 redis 部署方式

Redis 主从复制-sentinel 部署参考之前的一篇文章 redis 主从 + 哨兵模式集群部署(3台机器)

另外还有一种 redis-cluster . 这几种方式各有各的优缺点, 具体根据自己的业务需求去选择。

2.8 其他

  • 缓存穿透

当用户想要查询一个数据,redis 缓存没有命中,于是向持久层数据库(比如 mysql)查询,发现也没有,结果查询失败。当查询次数很多的时,就会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。

  • 缓存击穿

指一个热点 key,被大量并发集中访问,当这个 key 在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞

  • 缓存雪崩

当系统的 cache 层因为某种问题不能正常工作了。就导致所有的请求都会达到持久层,此时持久层的调用量会暴增,造成持久层挂掉的情况。

总结

上面对 redis 的基本知识点做了简单的梳理,详情还需要有针对性地去了解, 因为每个知识点如果展开讲,都能占用大量篇幅。

另附 redis 参考书籍:

《redis 实战》

《redis 深度探险》

《redis 设计与实现》

您可能感兴趣的文档:

--结束END--

本文标题: redis 基础知识点汇总

本文链接: https://www.lsjlt.com/news/5478.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql基础知识汇总
    本篇内容介绍了“mysql基础知识汇总”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL基础知识整理:s...
    99+
    2024-04-02
  • Java常见知识点汇总(③)——面向对象基础
    面向对象三要素:封装、继承、多态①. 封装:封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项,或者叫接口。②. 继承:继承基类的方法,并做出自己的扩展;声明某个子类兼容于某基类(或者说,接口上完全兼容于基类),外部调用者可无需关...
    99+
    2023-06-05
  • Python基础知识点总结
       学了一年多的Python,去年做了一段时间的爬虫项目,近来在做数据分析和机器学习的东西,抽空整理一下以前学的Python基础知识点,有借鉴与总结。具体知识点后续会分段展开深入。     1.到底什么是Python?你可以在回答中与...
    99+
    2023-01-31
    知识点 基础 Python
  • JAVA基础知识点总结
    文章目录 前言一、JAVA简介二、基础语法面向对象StringIntegerObject异常IO序列化Java 泛型注解反射 前言 一、JAVA简介 Java 是一门面向对象的编程语言。 语言特点:面向对象,平台无关性,支持多...
    99+
    2023-08-18
    java jvm 开发语言
  • Oracle基础知识点总结
    这篇文章主要讲解了“Oracle基础知识点总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle基础知识点总结”吧!首先上一张Oracle体系结构图...
    99+
    2024-04-02
  • STM32基础知识点总结
    一、基础知识点  1、课程体系介绍 单片机概述+arm体系结构+STM32开发环境搭建 STM32-GPIO编程-点亮世界的那盏灯 STM32-USART串口应用+SPI+液晶屏 STM32-中断系统 STM32-时钟系统 ...
    99+
    2023-09-04
    stm32 嵌入式硬件 单片机
  • python 基础知识汇总(注释规范)
    python 分为 单行注释,多行注释以及特殊注释特殊注释:#!/usr/bin/env python # -*-coding:utf-8-*-例1:#!/usr/bin/env python1、必须是文件的第一行2、必须以#!开头 3、...
    99+
    2023-01-31
    注释 基础知识 python
  • Redis基础知识点有哪些
    本篇内容介绍了“Redis基础知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 什么是Red...
    99+
    2024-04-02
  • Python基础之数据类型知识汇总
    目录一、数字类型二、字符串类型三、布尔类型四、空类型五、列表类型六、元组类型七、字典类型一、数字类型 1、整型int 就是整数 :100 ,200,2,3,4······· 2、浮点...
    99+
    2024-04-02
  • 有关前端基础知识整理汇总
    这篇文章主要介绍“有关前端基础知识整理汇总”,在日常操作中,相信很多人在有关前端基础知识整理汇总问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有关前端基础知识整理汇总”的疑惑...
    99+
    2024-04-02
  • 一些前端基础知识整理汇总
    这篇文章主要介绍“一些前端基础知识整理汇总”,在日常操作中,相信很多人在一些前端基础知识整理汇总问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”一些前端基础知识整理汇总”的疑惑...
    99+
    2024-04-02
  • js重点知识汇总
    这篇文章主要讲解了“js重点知识汇总”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“js重点知识汇总”吧!1、几种数据类型,哪些是值类型,哪些是引用类型数据类...
    99+
    2024-04-02
  • Pandas-DataFrame知识点汇总
    目录1、DataFrame的创建根据字典创建读取文件2、DataFrame轴的概念3、DataFrame一些性质索引、切片修改数据重新索引丢弃指定轴上的值算术运算函数应用和映射排序和...
    99+
    2024-04-02
  • Python3基础语法知识点总结
    本章节将一些Python3基础语法整理成手册,方便各位在日常使用和学习是查阅,包含了编码、标识符、保留字、注释、缩进、字符串等常用内容。 编码 默认情况下,Python 3 源码文件...
    99+
    2024-04-02
  • python 基础知识点归纳总结
    目录 1. python 基础知识点归纳总结1.1. 变量1.2. 数据类型1.3. 控制流语句1.3.1. if 语句1.3.2. for 循环1.3.3. while 循环 1.4....
    99+
    2023-10-20
    python 开发语言
  • Golang易错知识点汇总
    目录类型转换和类型断言1.类型转换示例代码2.类型断言代码示例全局变量全局变量使用var,编译通过全局变量不使用var,编译不通过init函数Go接口总结Go字符串如何修改字符串的内...
    99+
    2024-04-02
  • Python入门知识点汇总
    Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。缩进...
    99+
    2023-01-31
    知识点 入门 Python
  • SQL必知必会知识点汇总
    前言 ❤欢迎大家阅读我的文章呀❤ 今天是SQL必知必会的最后一块练习。 希望你们在我的文章当中能有所收获!!! SLogan:利用有限的时间,撸起袖子加油干!   本篇内容主要总结了【SQL必知必会】当中的一些知识点以及我做题过程当中...
    99+
    2023-08-24
    sql 数据库 c# mysql
  • java基础之泛型知识点总结
    目录一、什么是泛型?为什么要使用泛型? 二、泛型的特性是什么?三、泛型的使用方式 四、Java中的泛型通配符一、什么是泛型?为什么要使用泛型? 泛型,即“参数化...
    99+
    2024-04-02
  • jsp 基础知识总结
    这篇文章主要介绍jsp 基础知识总结,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.Servlet知识及常见错误和规律.桌面运行程序与WEB应用程序在过程实质是一样的---基于请求与响应的过程.2.http协议(超...
    99+
    2023-06-03
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作