Redis入门学习笔记

Redis简介

  • Redis是一个开源的基于内存的数据存储系统,他可以用作数据库缓存和消息队列等各种场景,他也是目前的最热门的NoSQL数据库之一
  • 来源:由于MySQL这类关系型数据库的访问是磁盘IO所以访问的速度并没有内存的读写速度快,故Redis这种基于内存的数据库应运而生
  • 共有10种数据类型:五种基本数据类型和五种高级数据类型
  • 基本数据类型:
    • 字符串 String
    • 列表 List
    • 集合 Set
    • 有序集合 SortedSet
    • 哈希 Hash
  • 高级数据类型
    • 消息队列 Stream
    • 地理空间 Geospatial
    • HyperLogLog
    • 位图 Bitmap
    • 位域 Bitfield

Redisy优点

  1. 性能极高
  2. 数据类型丰富,单键值对最大支持512M大小的数据
  3. 简单易用,支持所有主流编程语言
  4. 支持数据持久化、主从复制、哨兵模式等高可用特性

字符串 String

  • 使用set命令:set name miraculous
  • 使用get命令可以获取数据get name
    在这里插入图片描述
  • 使用del命令来删除键
  • 使用exists命令来判断某个键是否存在
  • 使用keys命令来查看数据库中都有哪些键
    在这里插入图片描述
  • 使用flushall来删除所有的键

注意:redis中的键值对默认采用二进制存储,所以默认是不能存储中文的。

  • 解决方法:先使用quit命令退出当前客户端,然后redis-cli --raw重新进入后即可正常显示中文
  • 使用ttl命令来查看某个键的过期时间
  • 使用expire命令来设置某个键的过期时间
  • 使用setex命令来设置一个带有过期时间的键值对
  • 使用setnx命令只有当键不存在的时候才设置键的值,如果键已经存在那么它不会执行任何操作

列表List

  • 一般用来存储和操作一组有顺序的数据和数组的概念比较类似
  • 使用lpush命令将数据插入到列表的头部
  • 使用rpush命令将数据插入到列表的尾部
  • 使用lrange + 列表名 + 起始位置 + 结束位置来获取列表中的内容,其中-1表示最后一个元素
  • 使用rpop命令删除列表的尾部元素,也可在其后面加入参数来指定删除元素的数量
  • 使用lpop命令删除列表的头部元素,也可在其后面加入参数来指定删除元素的数量
  • 使用ltrim + 起始位置 + 结束位置命令删除列表中指定范围以外的元素

集合Set

  • Set是一种无序集合,和列表的区别是:列表中的元素都是可以重复的,但是Set中的元素是不能重复的
  • 使用sadd命令向set中添加一个元素
  • 使用smembers + set名字命令来查看集合中的元素
  • 使用sismember + 集合名 + 元素名命令来判断一个元素是否在集合中
  • 使用srem + 集合名 + 元素名称元素来删除集合中的元素

有序集合SortedSet

  • 它和集合的区别是有序集合的每个元素都给会关联一个浮点类型的分数,然后按照这个分数来对集合中的元素进行从小到大的排序,分数可以重复但是元素不可以重复
  • 使用zadd命令来向有序集合来添加一个元素:zadd+集合名字 + 元素
  • 使用zrange + 集合名字 + 起始位置+ 结束位置命令来查看有序集合中范围中的元素
  • 使用zscore命令来查看某个成员的分数
  • 使用zrank命令来查看某个成员的排名
  • 使用zrevrank命令来反转排名

哈希Hash

  • 哈希是一个字符类型的字段和值的映射表
  • 使用hset + 哈希名称 + 键 + 值命令向哈希中添加一个键值对
  • 使用hget命令来获取哈希中的某个键值对
  • 使用hgetall命令来获取哈希中的所有键值对
  • 使用hdel命令来删除哈希中的某一个键值对
  • 使用hexists命令来查看哈希中是否存在某个键
  • 使用hkeys命令来获取哈希中的所有键

发布订阅功能

  • 使用publish命令将消息发送到指定的频道
  • 使用subscribe命令来订阅这个频道然后就可以接收到这个频道的消息了
  • 订阅频道的终端可以有多个,即一个频道可以被多个终端订阅
  • 局限性:无法消息持久化,无法记录历史消息等

消息队列Stream

  • 它是一个轻量级的消息队列
  • 使用xadd命令来向stream中添加一个消息
  • 使用xlen命令来查看stream中的消息的数量
  • 使用xrange命令来查看消息中的详细内容
  • 使用xdel命令来删除stream中的消息
  • 使用xread命令来读取消息:xread count 2 block 1000 streams 消息名称 0:0表示从第一个消息开始读取,count表示读取的数量,block表示阻塞的时长
  • 使用xgroup create命令来创建一个消费者组
  • 使用xinfo groups + 组名可以查看消费者组的信息
  • 使用xgroup createconsumer来创建消费者组的消费者

地理空间Geospatial

  • 它提供了一种存储地理位置信息的数据结构,同时支持对地理位置进行各种计算操作。
  • 使用geoadd命令来添加地理位置信息,可以设置经纬度
  • 使用geopos命令来获取某个地理位置的经纬度
  • 使用geodist命令来获取两个位置的直线距离,默认单位是米
  • 使用geosearch命令来搜索指定范围内的成员并返回

HyperLogLog

  • 是一种用来做基数统计的算法,计算一个集合中不重复元素的个数
  • 使用pfadd命令来添加一个元素
  • 使用pfcount命令来查看一个元素的基数
  • 使用pfmerge命令来合并两个元素

位图Bitmap

  • 位图是string类型的一个扩展
  • 使用setbit命令来设置位图中的偏移量和值
  • 使用getbit命令来获取位图中的偏移量和值

位域Bitfield

  • 位域可以将很多小的整数存储到一个较大的位图中

事务

  • 可以在一次请求中执行多个命令
  • Redis中的事务不具备原子性:某一个命令执行失败后不会影响其实命令的执行
  • 使用multi命令来开启一个事务
  • 使用exec命令来执行一个事务

持久化

  • Redis中的持久化主要有两种方式:
    1. RDB方式(Redis Database):在指定的时间间隔内,将内存中的数据快照写入磁盘,它是某一个时间点上数据的完整副本
    2. AOF方式(Append Only File):追加文件,它的原理是在执行写命令的时候不仅会将命令写入到内存中,还会将命令写入到一个追加的文件中,这个文件就是AOF文件,它会以日志的形式来记录每一个写操作,当Redis重启的时候就会通过重新执行AOP文件中的命令来在内存中重建整个数据库的内容。

主从复制

  • 是指将一个Redis服务器的数据复制到其他Redis服务器,也叫主节点和从节点,一个主节点可以有多个从节点,一个从节点只能有一个主节点,数据的复制是单向的,只能由主节点到从节点,主节点负责写操作,从节点负责读操作,主节点会将自己的数据变化通过异步的方式发送给从节点,从节点接收到主节点的数据之后更新自己的数据,这样就达到了数据一致的目的

哨兵模式

  • 哨兵会以一个独立的进程运行在Redis集群中,用来监控Redis集群中各个节点是否运行正常,它的主要功能如下:
  1. 监控:通过不断地发送命令来检查Redis节点是否正常
  2. 通知:如果发现某个节点出了问题,哨兵就会通过发布订阅模式来通知其他节点
  3. 自动故障转移:当主节点不能正常工作的时候,哨兵会开始一个自动故障转移的操作它会将一个从节点升级为新的主节点然后将其他的从节点指向新的主节点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值