REDIS笔记

本文详细介绍了Redis的基本概念、安装、数据类型(包括String、List、Set、Hash和Zset)、特殊数据类型(geo、hyperloglog、bitmap)、配置与持久化、事务操作、主从复制等内容,以及NoSQL的特点、分类和在实际项目中的应用。

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

https://www.bilibili.com/video/BV1S54y1R7SB?p=36&spm_id_from=pageDriver

官方中文文档

http://www.redis.cn/commands.html

步骤

nosql数据模型

nosql四大分类

CAP

BASE

Redis

        入门

        安装

        五大基本数据类型

         String,List,Set,Hash,Zset

        三种特殊数据类型

              geo,hyperloglog,bitmap

        Redis配置

        Redis持久化

                RDB,AOF

        Redis事务操作

        Redis实现订阅发布

        Redis主从复制

        Redis哨兵模式(现在公司中所有的集群都用哨兵模式)

        缓存穿透及解决方案

        缓存击穿及解决方案

        缓存雪崩及解决方案

        基础API之Jedis详解

        Springboot集成Redis操作

        实践

一、NoSQL特点        

1.解耦

(1)方便拓展(数据之间没有关系,很好扩展)

(2)大数据量 高性能 (Redis一秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能比较高)

(3)数据类型是多样型的!(不需要事先设计数据库,随取随用)

(4)传统EDBMS和NoSQL

 

 Nosql四大分类

 Redis入门

概述:

是什么?

Redis(Remote Dictionary Server),即远程字典服务。是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供了多种语言的API。

Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

免费开源!是当下最热门的的NoSQL技术之一!也被称为结构化数据库

能干嘛?

1.内存存储、持久化、内存中是断电即失、所以说持久化很重要(rdb、aof)

2.效率高、可用于告诉缓存

3.发布订阅系统

4.地图信息分析

5.计时器、计数器(浏览量)

6.............

下载安装(一般安装在Linux)

测试

 基础知识

Redis默认有16个数据库,默认使用第0个,可以使用select进行切换

 

Redis是单线程的!

Redis是单线程为什么这么快?

1.误区1:高性能 的服务器一定是多线程?

2.误区2:多线程(CPU上下文切换)一定比单项成效率高?

 五大数据类型(如果遇到不会命令,可在官网查看)

 Redis-key

keys  ------查看所有的key

set name zhangsan   ------设置key  name=zhangsan

set age 12  ------设置key  age=12

get name ------查看当前key的值

exists  name  ------判断当前key是否存在  

move name 1 ------移除当前key 

expire name 10 ------设置key的过期时间,单位是秒

ttl name    ------查看当前key的剩余时间

type name  -------查单当前key的一个类型

String (字符串)

APPEND name "hello" -----在key后追加字符串,如果当前key不存在,就相当于set key

STRLEN name  -----获取字符串的长度

步长 i++(下面命令可用于设置浏览量)

set views 0 ------ 设置一个key,views=0,初始浏览量为0

incr views ------ 自增一 , 浏览量变为1

incr views ------ 浏览量变为2

decr views  ------自减一,浏览量变为1

INCRBY views 10 ------设置自增步长为10,设置后views每次自增10

DECRBY views 5  ------ 设置自减步长为5,设置后views每次自减5

字符串范围  (range)

GETRANGE  name  0  3  ------截取字符串 [0,3]

GETRANGE  name  0  -1  -------获取全部字符串,同get key

SETRANGE name 1  haha   ------替换指定位置开始的字符串

setex (set with expire)  ------设置过期时间

setnx (set if not exist)  ------不存在时设置(在分布式锁中会常常使用)

mset   ------批量设置

mget  -------批量获取

 

 mset user:1:name zhangsan  user:1:age 21 user:2:name lisi user:2:age 22

批量设置,key=value , user:1:name = zhangsan  , user:1:age = 21......

mget user:1:name user:1:age user:2:name user:2:age -----批量获取

getset  ----先get再set

getset db redis  ------如果不存在值,设置值,返回null

getset db mongodb  ------如果存在值,获取原来的值,并设置新的值 

List

基本数据类型,列表

在redis里面,我们可以把 list 玩成, 栈 ,队列,阻塞队列!

所有的list命令都是以 L 开头

 移除

LPOP   ------移除左边(头部)元素

RPOP  ------移除右边(尾部)元素

移除指定的值

Lrem 

 trim ------修剪 (截取)  列表中(LTRIM)

 rpoplpush 移除列表最后一个元素,将其移动到新的列表中

LSET  ---- 将列表中指定下标的值替换为指定的值,更新操作

如果列表或者元素不存在会报错

LINSERT  插入操作,在某一个具体的value插入到列表中某个元素的前面或者后面

小结:

他实际上是一个链表,before Node after , left , right 都可以插入值

如果key不存在,创建新的链表

如果key存在,新增内容

如果移除了所有值,空链表,也代表不存在!

在两边插入或者改动值,效率最高! 中间元素,相对来说效率会低一点~

消息排队 !消息队列(Lpush Rpop), 栈 (Lpush Lpop)

Set()

set中的值不能重读

 rem 移除 set中(srem)

 set  无序不可重复,抽随机!

删除指定的key,随机删除key!

 将一个指定的值,移动到另一个set集合!smove

 数字集合类:

-- 差集  SDIFF

-- 交集  SINTER

-- 并集  SUNION

微博,A用户将所有关注的人放在一个set集合中! 将他的粉丝也放在一个集合中!

共同关注,共同爱好,二度好友,推荐好友! (六度分割理论)

Hash(哈希)

Map集合,key-map!时候这个值是一个map集合! 本质和String 类型没有太大区别,还是一个简单的key-value!

 hlen

是否存在 

 

 设置增量,,步长

 hash变更的数据user name age,尤其是用户信息之类的,经常变动的信息! hash 更适合于对象的存储,String更加适合字符串存储!

Zset(有序集合)

 

 

三种特殊数据类型

 geospatial只有6个命令

 

 Bitmaps

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你开心是我想要的

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

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

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

打赏作者

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

抵扣说明:

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

余额充值