redis学习笔记

本文是关于Redis的学习笔记,详细介绍了Redis的特性和操作,包括RDB错误解决方案、传统关系型数据库的ACID属性、CAP定理和分布式BASE理论。此外,还涵盖了Redis的安装、基础操作以及五大数据类型(String、Hash、List、Set、Zset)的使用方法,如增删查改等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

寒假的第一个技术栈:redis

redis是nosql类型数据库,与传统关系型数据库不同。redis以bson格式储存数据,灵活性很强。并且在内存中读写,速度非常快,常用于作为缓存,保存高频查询的字段,减轻其他数据库的压力

RDB错误解决方案(临时)

config set stop-writes-on-bgsave-error no

传统关系型数据库ACID

A:atomicity:原子性:事务要么同时完成,要么同时失败,不能分割。

C:Consistency:一致性,执行操作前后数据库约束应该一致。

I:Isolation,并发时,别人的操作不应该影响我的操作。

D:Duration,持久性,数据应该永久保存在数据库中,宕机了也不应该消失

CAP定理

CAP只能三选二:

C:Consistency:强一致性 在某个写操作完成之后的任何读操作都必须返回该写操作写入的值,即数据修改完后应该立即能被查询到

A:Availability 可用性,任何一个在线的结点收到请求都必须做出响应,无论成功或者失败

P:Partition tolerance 分区容错性 不同结点数据可能不一致,但要保证系统能正常运行(分布式系统必选)

分布式BASE定理

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。
BASE理论是eBay架构师提出的。
BASE定理来源:是CAP中一致性和可用性的权衡结果,它来自大规模互联网分布式系统的总结,是基于CAP定理逐步演化而来的。
BASE定理的核心思想:即使无法做到强一致性,但是每个应用可以根据自身的业务特定,采用合适的方式来达到最终一致性。
————————————————
版权声明:本文为优快云博主「盛难晨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_42332821/article/details/104283428

BASE是指服务保证基本可用(Basically Available),可以存在软状态(Soft State),最终能够达到一致性(Eventual Consistency

Basically Available 基本可用

出现系统故障时,允许服务部分不可用。

比如在某网站点了个赞,但是5秒之后才出现反馈,而且是“服务异常请重试”。这表示服务确实有异常,但并非完全不可用——至少还有反馈。

Soft State 软状态

允许系统存在可用的中间状态。

即允许在数据同步期间,用户的同一请求得到的数据不同(但服务整体还可用),因为处理请求的服务的数据同步状态可能不同。

Eventual Consistency 最终一致

强调系统数据最终能够达到一致状态,相对强一致性的系统,这是一种弱一致性。

也就是说虽不要求实时一致的数据同步,但最终应当进入一致状态。

作者:XHLeee
链接:https://www.jianshu.com/p/66e8449c36d8
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Redis的安装

Redis安装在Linux上,记录一些Linux命令:

ll:查看当前目录下的所有文件

mkdir 文件夹名:创建一个新的文件夹

cp 文件名 移动目标文件夹 :复制一个文件到一个文件夹中

cd xx :进到xx目录中

cd … :回到上一级目录

tar -zxvf 文件名 :解压tar文件

Redis杂项基础知识

Redis是单进程的,安装的时候默认安装16个库,使用select 下标 选择不同的库

keys *查看所有的key

flushdb清除当前库flushall清除所有库

dbsize查看key的数量

Redis的五大基本数据类型

String 字符串型,理论最大不超过512M

Hash 哈希,类似Java中的HashMap

List 列表

Set 集合

Zset 有序集合

再加一个

Key

Key关键字的操作

keys * :查看当前库中所有的key

exists key : 查看当前库中是否存在名为key的键

move key 2 :把key移动到下标为2的库中

expire key : 给key设定过期时间

ttl key : 查看还有多少秒钟过期(-1代表永不过期,-2代表已过期)

type key : 查看你的key是什么类型

String的操作

get/set 存取

append/del/strlen 在value后加/删除key/查看value长度

incr/decr/incrby/decrby 只有数字能进行,incr一次加1,incrby自定义增值

getrange/setrange : getrange 起始下标 结束下标(-1全部)获得范围内下标的值,setrange 起始下标 替换的值 从起始下标开始替换值

setex(set with expire)/setnx(set if not exist) :带过期的设置和如果不存在再设置

mset/mget/msetnx(multiple set) :多个操作。注意:msetnx只要有一个不符合,全部不执行

List的操作

lpush/rpush/lrange : left push,从左往右压入列表,right push,从右往左压入列表。lpush读取出来的时候顺序和输入时相反,right push读取出来的顺序与输入时相同

lpop/rpop : left pop弹出栈顶,rpop弹出栈底

lindex : 按从上到下的下标获取元素

llen : 查看list的长度

lrem : 从上到下删除n个元素

ltrim :截取某个范围的值再赋值给key

rpoplpush 源列表 目标列表 : 把源列表底部元素弹出压到目标列表的表头

lset :从上往下设置下标为N的元素

linsert key before/after : 把key在某个元素后/前插入

List性能分析:List是一个双向链表,在列表的头或者尾插入效率都很高,但是往中间插入效率就比较低。(链表特性)

Set的操作

sadd/smembers/sismember :分别是:新增集合,查询某个集合里面的所有元素,查询某个元素是否存在于集合中。

scard : 查询集合中元素的个数

srem : 移除集合中的某个元素

srandmember key n : 随机在一个集合中抽取n个数字(用于抽奖随机选取用户)

spop key n: 随机弹出key中的n个元素

smove key1 key2 n : 把元素n从key1移动到key2

数学集合类:

差集:sdiff set1 set2 set… : 在第一个set中存在,在后面的set中都不存在

交集:sinter : 所有set的交集

并集:sunion : 所有set的并集

Hash的操作

KV模式不变,但是V是一个键值对

hset key field value : key相当于pojo类,field和value对应的是类里的字段和字段值。

hset/hget/hmset/hmget/hgetall/hdel : 常用命令

hlen : 查看hash的长度

hexists key : 查看hash中是否存在key

hkeys/hvals : 查看所有的key和所有的value

hincrby/hincrbyfloat : 数字增长

hsetnx : set if not exist 如果不存在则加入

Zset(sorted set)有序集合的操作

zadd/zrange : 添加和查看有序集合,注意,zadd参数:zadd key score member [score member…]

zrange可带参数:withscores

zrangebyscore : 按照分数段来查询

zrem key score : 移除key中的某个score对应的member值

zrem可带参数:withscores , (不包含 , limit offset count 限制查询个数,从offset下标开始,查询count个参数

zcard : 查看元素个数,注意score member键值对算一个

zcount key min max : 统计score在min和max之间的元素个数

zrank key member : 获得key中member的下标

zscore key member : 获得key中member对应的score值

zrevrank : z reverse rank把member的排名反过来

zrevrange : 把zrange获得的结果反过来

zrevrangebyscore max min : 按照分数段查询,但是这里的分数段是从max到min

尚硅谷是一个教育机构,他们提供了一份关于Redis学习笔记。根据提供的引用内容,我们可以了解到他们提到了一些关于Redis配置和使用的内容。 首先,在引用中提到了通过执行命令"vi /redis-6.2.6/redis.conf"来编辑Redis配置文件。这个命令可以让你进入只读模式来查询"daemonize"配置项的位置。 在引用中提到了Redis会根据键值计算出应该送往的插槽,并且如果不是该客户端对应服务器的插槽,Redis会报错并告知应该前往的Redis实例的地址和端口。 在引用中提到了通过修改Redis的配置文件来指定Redis的日志文件位置。可以使用命令"sudo vim /etc/redis.conf"来编辑Redis的配置文件,并且在文件中指定日志文件的位置。 通过这些引用内容,我们可以得出结论,尚硅谷的Redis学习笔记涵盖了关于Redis的配置和使用的内容,并提供了一些相关的命令和操作示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis学习笔记--尚硅谷](https://blog.youkuaiyun.com/HHCS231/article/details/123637379)[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* *3* [Redis学习笔记——尚硅谷](https://blog.youkuaiyun.com/qq_48092631/article/details/129662119)[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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

房石 陽明

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值