Redis笔记(基础篇)

目录

一、入门

1、定义

2、启动

3、停止

4、配置

二、数据类型

1、键的操作

2、字符串

3、散列

4、列表

5、集合

6、有序集合

三、进阶

1、事务

2、过期时间

3、排序

4、消息通知

四、脚本

五、持久化

1、RDB

【定义】

【四种数据快照情况】

【快照原理】 

2、AOF

【定义】

【使用】

六、集群

1、复制

2、哨兵

3、集群


一、入门

1、定义

Redis(REmote DIctionary Server远程字典服务)是一个开源的、高性能、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求。

2、启动

redis-server

3、停止

redis-cli SHUTDOWN

4、配置

(1)启动前静态配置

redis-server /path/to/redis.conf

(2) 启动后动态配置

CONFIG SET

二、数据类型

1、键的操作

(1)获得符合规则的键名列表

KEYS pattern

(2)判断键是否存在

EXISTS key

(3)删除键

DEL key [key ...] 

(4)获得键值的数据类型

TYPE key

2、字符串

(1)赋值

SET key value

(2)取值

GET key

(3)数字键值操作

//数字递增
INCR key

//增加指定的整数
INCRBY key increment

//数字递减
DECR key

//减少指定的整数
DECR key increment

//增加指定浮点数
INCRBYFLOAT key increment

(4)字符串键值操作

//向尾部追加值
APPEND key value

//获取字符串长度
STRLEN key

(5)同时获得/设置多个键值

MGET key [key ...]
MSET key value [key value ...]

(6)位操作

GETBIT key offset
SETBIT key offset value
BITCOUNT key [start] [end]
BITOP operation destkey key [keys ...]

3、散列

(1)赋值

HSET key field value
HMSET key field value [field value ...]

(2)取值

HGET key field
HMGET key field [field ...]
HGETALL key

(3)判断字段是否存在

HSETNX key field value

(4)当字段不存在时赋值 

HEXISTS key field

(5)增加数字

HINCRBY key field increment

(6)删除字段

HDEL key field [field ...]

4、列表

【链表实现】

(1)向列表两端增加元素

LPUSH key value [value ...]

RPUSH key value [value ...]

(2)从列表两端弹出元素

LPOP key

RPOP key

(3)获取列表中元素的个数

LLEN key

(4)获得列表片段

LRANGE key start stop

(5)删除列表中指定的值

LREM key count value

(6)获得/设置指定索引的元素值

LINDEX key index

LSET key index value

(7)向列表中插入元素

LINSERT key BEFORE|AFTER pivot value

(8)将元素从一个列表转到另一个列表 

RPOPLPUSH source destination

5、集合

(1)增加/删除元素

SADD key member [member ...]

SREM key member [member ...]

(2)获得集合中的所有元素

SMEMBERS key

(3)判断元素是否在集合中

SISMEMBER key member

(4)集合间运算

SDIFF key [key ...]
SINTER key [key ...]
SUNION key [key ...]

(5)获得集合中元素个数

SCARD key

(6)进行集合运算并将结果存储

SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]

(7)随机获得集合中的元素

SRANDMEMBER key [count]

(8)从集合中弹出一个元素

SPOP key

6、有序集合

【散列表和跳表实现】

(1)增加元素

ZADD key score member [score member ...]

(2)获得元素分数

ZSCORE key member

(3)获得排名在某个范围的元素列表

ZRANGE key start stop [WITHSCORES]
ZREVRANGE key start stop [WITHSCORES]

(4)获得指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

(5)增加某个元素的分数

ZINCRBY key increment member

(6)获得集合中元素的数量

ZCARD key

(7)获得指定分数范围内的元素个数

ZCOUNT key min max

(8)删除一个或多个元素

ZREM key member [member ...]

(9)按照排名范围删除元素

ZREMRANGEBYRANK key start stop

(10)按照分数范围删除元素

ZREMRANGEBYSCORE key min max

(11)获得元素的排名

ZRANK key member
ZREVRANK key member

(12)计算有序集合的元素

三、进阶

1、事务

(1)Redis中的事务是一组命令的集合。

redis> MULTI
ok
redis> SADD "user:1:following" 2
QUEUED
redis> SADD "user:1:following" 1
QUEUED
redis> EXEC
1) (integer) 1
2) (integer) 1

(2)Redis事务错误的处理方式

  • 语法错误:具有事务的原子性特征
  • 运行错误:不具有事务的原子性特征,不能回滚

(3)WATCH命令可以监控一个或多个键,一旦其中有一个键被修改或删除,之后的事务就不会被执行,一直持续到EXEC命令。

WATCH命令的作用知识当被监控的键值被修改之后阻止后一个事务的执行,而不能保证其他客户端不修改这一键值。

2、过期时间

(1)设置过期时间

EXPIRE key seconds

(2)查看剩余生存时间

TTL key

 (3)取消键的过期时间设置(将键恢复成永久)

PERSIST key

3、排序

(1)SORT:对列表类型、集合类型、有序集合类型键值进行排序。

(2)BY:根据参考键排序。

(3)GET:使SORT命令的返回结果不再是元素自身的值,而是GET参数中的指定键值。

(4)STORE:把SORT排序后的结果保存到sort.result键中。

4、消息通知

四、脚本

五、持久化

1、RDB

【定义】

RDB方式的持久化是通过快照完成的,当符合一定条件是Redis会自动将内存中的所有数据生成一份副本并存储在硬盘上,这个过程即为快照。

【四种数据快照情况】

(1)自动快照

时间窗口M内更改的键数大于改动键数N时,进行自动快照

SAVE time keycount

(2)SAVE或BGSAVE命令

同步快照

SAVE

异步快照

BGSAVE

(3)FLUSHALL命令

清除数据库所有数据,只要自动快照条件不为空,就执行一次快照。

FLUSHALL

(4)执行复制

主从模式下,Redis会在复制初始化时进行自动快照。

【快照原理】 

快照过程如下:

(1)Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);

(2)父进程继续接收并处理客户端发来的命令,而子进程开始将内存中的数据写入硬盘的临时文件;

(3)当子进程写入完所有数据后会用该临时文件替换旧的RDB文件,至此一次快照操作完成。

2、AOF

【定义】

Redis在存储非临时数据时,一般需要打开AOF持久化来降低进程中止导致的数据丢失。AOF可以将Redis执行的每一条写命令追加到硬盘文件中,但是会降低Redis部分性能。

【使用】

(1)开启AOF

appendonly yes

(2)AOF重写条件

# 当目前的AOF文件大小超过上一次重写时(或启动时)的AOF文件大小的百分比时进行重写
auto-aof-rewrite-percentage 100

# 限制了允许重写的最小AOF文件大小
auto-aof-rewrite-min-size 64mb

(3)同步硬盘数据

# appendfsync always
appendfsync everysec

# appendfsync no

六、集群

1、复制

(1)目的

当一台数据库中的数据更新后,自动将更新的数据同步到其他数据库上。

(2)原理过程

  1. 当一个从数据库启动后,会向主数据库发送SYNC命令;
  2. 同时主数据库接收到SYNC命令会开始在后台保存快照(即RDB持久化),并将保存快照期间接收到的命令缓存起来;
  3. 快照完成后,Redis会将快照文件和所有缓存的命令发送给从数据库;
  4. 从数据库收到后,会载入快照文件并执行收到的缓存的命令;
  5. 复制初始化后,主数据库每当收到写命令时就会将命令同步给从数据库,从而保证主从数据库数据一致;
  6. 断线重连时,由于Redis2.8能够支持有条件的增量数据传输,主数据库只需要将短线期间执行的命令传送给从数据库。

2、哨兵

(1)定义

监控Redis系统的运行状况,主要功能包括:

  • 监控主数据库和从数据库是否正常运行
  • 主数据库出现故障时自动将从数据库转换为主数据库

(2)原理

(3)故障恢复

首先领头哨兵将从停止服务的主数据库的从数据库中挑选一个充当新的主数据库:

  1. 在所有在线的从数据库中,选择优先级最高的从数据库;
  2. 如果有多个最高优先级的从数据库,则复制的命令偏移量越大越优先;
  3. 如果以上条件都一样,则选择运行ID较小的从数据库。

选出一个从数据库后,领头哨兵将向从数据库发送SLAVEOF NO ONE 命令使其升格为主数据库;

而后领头哨兵向其他从数据库发送SLAVEOF命令来使其成为新主数据库的从数据库;

最后异步则是更新内部的记录,将已经停止服务的旧的主数据库更新为新的主数据库的从数据库,使其当期恢复服务时自动以从数据库的身份继续服务。 

3、集群

(1)集群方式

  • 主从模式
  • Sentinel模式(哨兵)
  • Cluster模式(动态扩容)

(2)节点增加

(3)插槽分配


参考书籍: 《Redis入门指南》(第二版)李子骅 人民邮电出版社

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
黑马Redis高级笔记提供了关于Redis的一些最佳实践和高级功能的知识点。其中包括了以下几个主题: 1. Redis键值设计:介绍了如何设计优雅的key结构,避免BigKey的出现,并选择恰当的数据类型来提高性能。 2. 批处理优化:介绍了在Redis集群中如何进行批处理优化,包括使用Pipeline来提高性能,并分享了在集群环境下的批处理技巧。 3. 服务端优化:介绍了一些Redis服务器的优化方法,包括持久化配置、慢查询优化、命令及安全配置以及内存配置。 4. 集群最佳实践:提供了关于Redis集群的最佳实践,包括如何查询集群状态以及散列插槽的相关知识。 这些笔记提供了关于如何优化Redis性能及使用Redis集群的一些实用技巧和建议。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [黑马Redis笔记高级 | 分布式缓存](https://blog.csdn.net/2301_77450803/article/details/130547696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [黑马Redis笔记高级 | Redis最佳实践](https://blog.csdn.net/2301_77450803/article/details/130659537)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱强拆的鲁班七号

码字不易,梦想路上与君共勉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值