百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Redis复习:基础知识+数据结构+常用命令操作+我的redis学习笔记

mhr18 2024-11-19 06:47 21 浏览 0 评论

<推荐阅读>

字节跳动秋招面经:后端开发工程师,已拿意向书

MySQL复习:20道常见面试题(含答案)+21条MySQL性能调优经验

好记性不如烂笔头

Redis:是一款高性能的NOSQL系列的非关系型数据库

我的Redis学习笔记分享如下,有需要的朋友可以私信【Redis】免费领取~

01 概念

1.1 什么是redis

  1. Redis:REmote DIctionary Server(远程字典服务器)
  2. 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。
  3. Redis 与其他 key - value 缓存产品有以下三个特点:
  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用;
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储;
  • Redis支持数据的备份,即master-slave模式的数据备份;

1.2 redis的应用场景

  1. 缓存(数据查询、短连接、新闻内容、商品内容等等)
  2. 聊天室的在线好友列表
  3. 任务队列。(秒杀、抢购、12306等等)
  4. 应用排行榜
  5. 网站访问统计
  6. 数据过期处理(可以精确到毫秒)
  7. 分布式集群架构中的session分离

02 下载安装

  1. 官网:https://redis.io
  2. 中文网:http://www.redis.net.cn/
  3. 解压直接可以使用:
  • redis.windows.conf:配置文件
  • redis-cli.exe:redis的客户端
  • redis-server.exe:redis服务器端

03 启动后基础知识

3.1 单进程

  1. 单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率;
  2. epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率;

3.2 redis数据库的一些概念及操作

  1. 默认16个数据库,类似数组下表从零开始,初始默认使用零号库;
  2. 统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上,redis默认端口是6379;
  3. select命令切换数据库:select 0-15;
  4. dbsize:查看当前数据库的key的数量;
  5. flushdb:清空当前库;
  6. flushall;通杀全部库;

04 Redis数据结构

redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构

4.1 字符串类型 string

  • string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value;
  • string类型是二进制安全的。意思是redis的string可以包含任何数据。如jpg图片或者序列化的对象 ;

string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M;

4.2 哈希类型 hash : (map格式)

  • redis的hash 是一个键值对集合;
  • redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象;
  • 类似Java里面的Map<String,Object>;

4.3 列表类型 list :(linkedlist格式。支持重复元素)

  • redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。它的底层实际是个链表。

4.4 集合类型 set : (不允许重复元素)

  • redis的set是string类型的无序集合。它是通过HashTable实现的。

4.5 有序集合类型 sortedset:(不允许重复元素,且元素有顺序)

  • redis的sortedset和 set 一样也是string类型元素的集合,且不允许重复的成员;
  • 不同的是每个元素都会关联一个double类型的分数;
  • redis正是通过分数来为集合中的成员进行从小到大的排序。sortedset的成员是唯一的,但分数(score)却可以重复;

05 常用命令操作

redis常见数据类型操作命令参考网址http://redisdoc.com/

5.1 字符串类型 String

  • SET key value(存储:将字符串值 value 关联到 key)
  • GET key(获取:返回与键 key 相关联的字符串值)
  • DEL key(删除:删除给定的 key )
  • APPEND key value( APPEND 命令将把 value 追加到键 key 现有值的末尾,没有 key 就自动添加)
  • STRLEN key(返回键 key 储存的字符串值的长度)

5.2 哈希类型 hash

  • HSET key field value(存储:将哈希表 hash 中域 field 的值设置为 value)
  • HGET key field(获取:获取指定的field对应的值)
  • HDEL key field(删除:删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略)
  • HMSET key field value [field value …](同时将多个 field-value (域-值)对设置到哈希表 key 中)
  • HMGET key field [field …](返回哈希表 key 中,一个或多个给定域的值)
  • HGETALL key(返回哈希表 key 中,所有的域和值)

5.3 列表类型 list

  • LPUSH key value(添加:将元素加入列表左边表头)
  • RPUSH key value(添加:将元素加入列表右边表尾)
  • LRANGE key start stop(返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定)
  • LPOP key(删除:删除列表最左边的元素,并将元素返回)
  • RPOP key(删除:删除列表最右边的元素,并将元素返回)
  • LINDEX key index(返回列表 key 中,下标为 index的元素)

5.4 集合类型 set

  • SADD key member [member …](存储:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member元素将被忽略)
  • SMEMBERS key(获取:返回集合 key 中的所有成员)
  • SREM key member [member …](移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略)
  • SISMEMBER key member(判断 member元素是否集合 key 的成员)

5.5 有序集合类型 sortedset

  • ZADD key score member [[score member] [score member] …](储存:将一个或多个 member 元素及其 score 值加入到有序集 key 当中)
  • ZRANGE key start stop [WITHSCORES](获取:返回有序集 key 中,指定区间内的成员,其中成员的位置按 score 值递增(从小到大)来排列)
  • ZREM key member [member …](删除:移除有序集 key 中的一个或多个成员,不存在的成员将被忽略)

5.6 redis 键(key) --常用命令介绍

  • keys *:查看所有 key ;
  • exists key的名字:判断某个 key 是否存在;
  • move key dbID(0-15): 当前库就没有了,被移除了;
  • expire key 秒钟: 为给定的 key 设置过期时间;
  • ttl key: 查看还有多少秒过期,-1表示永不过期,-2表示已过期;
  • type key: 查看你的 key 是什么类型;

06 持久化

redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。

6.1 RDB(Redis DataBase)

在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里;

RDB保存的是dump.rdb文件;

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失;

fork:复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程;

(1)在一定的间隔时间中,检测key的变化情况,然后持久化数据

  • 编辑redis.windwos.conf文件
 		# after 900 sec (15 min) if at least 1 key changed
 		save 900 1
 		# after 300 sec (5 min) if at least 10 keys changed
 		save 300 10
 		# after 60 sec if at least 10000 keys changed
 		save 60 10000
  • 重新启动redis服务器,并指定配置文件名称

D:\redis\windows-64\redis-2.8.9>redis-server.exe redis.windows.conf

6.2 AOF(Append Only File)

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作(AOF保存的是appendonly.aof文件);

6.3 编辑redis.windwos.conf文件

appendonly no(关闭aof) --> appendonly yes (开启aof)
# appendfsync always : 每一次操作都进行持久化
appendfsync everysec: 每隔一秒进行一次持久化
# appendfsync no	: 不进行持久化‘’

还有更多整理的资料(Java,MySQL,Spring,分布式,微服务,算法,框架,中间件...)分享出来给有需要的朋友,大家可以私信【资料】免费领取哦~

相关推荐

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...

Pure Storage推出统一数据管理云平台及新闪存阵列

PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...

对Java学习的10条建议(对java课程的建议)

不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!

官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...

JDK21有没有什么稳定、简单又强势的特性?

佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...

「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了

在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...

Java面试题及答案最全总结(2025版)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

数据库日常运维工作内容(数据库日常运维 工作内容)

#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...

分布式之系统底层原理(上)(底层分布式技术)

作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...

oracle 死锁了怎么办?kill 进程 直接上干货

1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

取消回复欢迎 发表评论: