Redis 个人狂神说视频学习笔记


参考视频: 【狂神说Java】Redis最小超详细版教程通俗易懂

Redis

Nosql概述

什么是NoSQL

NoSQL = Not Only SQL (不仅仅是SQL)

关系型数据库:表格、行、列

泛指非关系型数据库,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区!暴露出来很多难以克服的问题。NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的,而且是我们当下必须掌握的一个技术!

很多数类型用户的个人信息,社交网络,地理位置、这些数据类型的存储不需要一个固定的格式!不需要多月的操作就可以横向扩展的!Map<String,Object>使用键值对来控制!

NoSQL特点

解耦!

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

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

  3. 数据类型是多样型的(不需要事先设计数据库!随取随用,如果是数据量十分大的表,很多人就无法设计了)

  4. 传统RDBMS和NoSQL

    传统的 RDBMS
    - 结构化组长
    - SQL
    - 数据和关系都存在单独的表中 row col
    - 数据操作,数据定义语言
    - 严格的一致性
    - 基础的事务
    

    NoSQL
    - 不仅仅是数据
    - 没有固定的查询语言
    - 键值对存储,列存储,文档存储,图形数据库(社交关系)
    - 最终一致性
    - CAP定理和BASE (异地多活)--> 初级架构师
    - 高性能 高并发 高可拓
    
3V+3高

大数据时代的3V:主要是描述问题的

  1. 海量Volume
  2. 多样Variety
  3. 实时Velocity

大数据时代的3高:主要是对程序的要求

  1. 高并发
  2. 高可用
  3. 高性能 (保证用户体验和性能)

真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的

NoSQL的四大分类

KV键值对

  • Redis

文档型数据库(bson‘格式 和json一样)

  • MongoDB (一般必须要求掌握)

    • MongoDB 是一个基于分布式文件存储的数据库,C++编写,主要用来处理大量的文档
    • MongoDB是一个介于关系数据库和非关系型数据库中中间的产品!MongoDB是非关系数据库中功能最丰富,最像关系型数据库的!
  • ConthDB

列存储数据库

  • HBase
  • 分布式文件系统

图形关系数据库

  • 他不是存图片,存放的是关系,比如:朋友圈社交网络,广告推荐!
  • Neo4j,InfoGrid

在这里插入图片描述

Redis入门

概述

Redis 是什么?

Redis ( Remote Dictionary Server ) 远程字典服务

是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

免费和开源!是当下最热门的NoSQL技术之一!也被人们称谓诶结构化数据库。

在这里插入图片描述

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

Redis 能干嘛?

  1. 内存存储、持久化,内存中是断电即失、所以说持久化很重要**(rdb、aof)**
  2. 效率高,可以用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器、计数器(浏览量)

特性

  1. 多样的数据类型
  2. 持久化
  3. 集群
  4. 事务

学习中需要用到的东西

  1. 官网:https://redis.io/

  2. 中文官网:http://www.redis.cn/

  3. 下载地址:官网下载

    在这里插入图片描述

    注意:Windows在GitHub上下载(停更很久了)
    Redis推荐都是在Linux服务器上搭建的

Windows安装

  1. 下载安装包:https://github.com/MicrosoftArchive/redis/releases

  2. 解压到电脑上的环境目录下即可!Redis非常小,只有5M
    在这里插入图片描述

  3. 开启Redis,双击运行服务(redis-server.exe)即可
    在这里插入图片描述

    端口:6379

  4. 使用redis客户端来连接redis
    在这里插入图片描述

Linux安装

  1. 下载安装包 redis.tar.gz

  2. 解压Redis安装包

    cp redis.tar.gz /opt #复制压缩包到/opt下
    tar -zxvf redis.tar.gz #解压
    
  3. 保证c++环境yum install gcc-c++

  4. 在解压后的redis目录下执行make,make install

  5. redis默认安装路径 /usr/local/bin

  6. 配置文件的目录/opt/redis/redis.conf,使用配置文件启动

  7. redis默认不是后台启动的,需要配置
    在这里插入图片描述

  8. 启动服务 redis-server 配置文件目录/redis.conf

  9. 启动客户端 redis-cli -p 6379
    如果有密码则在程序中输入 auth “密码”

  10. 关闭客户端,在程序中输入 shutdown关闭连接,然后exit退出

测试性能

redis-benchmark 是一个压力测试工具

官方自带的性能测试工具

在这里插入图片描述

简单测试:

# 测试:100个连接 100000次请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000

基础知识

redis默认有16个数据库

默认使用第0个

  • redis 的命令不区分大小写
  • 可以使用 select 数据库号 进行切换数据库
127.0.0.1:6379> select 7
OK
127.0.0.1:6379[7]> DBSIZE
(integer) 0
  • 查看数据库所有的key keys *

  • 清空当前数据库flushdb

  • 清空全部数据库FLUSHALL

Redis 是单线程的!

Redis是很快的,官方表示,Redis是基于内存操作,CPU并不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程。

Redis是C语言写的,官方提供的数据为 100000 + 的QPS,完全不比同样是使用key-value的Memecache差!

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

  1. 误区1:高性能的服务器一定是多线程的?
  2. 误区2:多线程(CPU上下文会切换)一定比单线程效率高!
    核心:redis是将所有的数据全部存放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作),对于内存系统来说,如果没有上下文切换,效率就是最高的。多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案。

五大数据类型

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库缓存消息中间件。 它支持多种类型的数据结构,如 字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets) 与范围查询, bitmapshyperloglogs地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)LUA脚本(Lua scripting)LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

Redis-Key

set [key] [value]
get [key]
rename [key] [newKey] # 更换key名
randomkey # 获取随机的key
del [key] 
exist [key] #判断key是否存在
move [key] [数据库号] #移动某一个键值对到指定库中
expire [key] [过期时间]	#设置某个键值对的过期时间
type [key] #查看当前key的类型
ttl [eky] #查看当前key的过期剩余时间

keys * #获取所有key

setex [key] [time] #expire [key] [time]
setnx [key] [value] #if [key] not exist set [key] [value](分布式锁常用)

mset [k1] [v1] [k2] [v2] ... # 同时设置多个值
mget [k1] [k2] ... # 同时获取多个值
msetnx [k1] [v1] [k2] [v2] ... # 同时多次setnx,原子性,要么都成功要么都失败!

getset [key] [value] #先执行get [key],最后set [key] [value]

dbsize #获取当前数据库key数量
flushdb #清空当前数据库
flushall #清空所有数据库
select [dbnum] #切换到dbnum号数据库

String(字符串)

append [key] [追加的字符串] # 追加字符串(拼接),返回字符串长度,如果key不存在则相当于set
strlen [key] # 查看字符串长度
incr [key] # 自增1
decr [key] # 自减1
incrby [key] [num] # 自增 num 
decrby [key] [num] # 自减 num
getrange [key] [start] [end] #截取[start,end]字符,若start=0,end=-1则获取整个字符串

String类似的使用场景:value除了是我们的字符串还可以是我们的数字!

  • 计数器
  • 统计多单位的数量
  • 粉丝数
  • 对象缓存存储

List(列表)

在redis里面,我们可以把list当栈、队列、阻塞队列来使用。

LPUSH [list] [v1] [v2] ... #将一个或多个值 按顺序插入列表左部
LRANGE [list] [start] [end] #从左部开始获取[start,end]的值列表
LPOP [list] ([count]) #从左部出栈一个元素,若count存在则出栈count个元素

RPUSH [list] [v1] [v2] ... #将一个或多个值 按顺序插入列表右部
RRANGE [list] [start] [end] #从右部开始获取[start,end]的值列表
RPOP [list] ([count]) #从右部出栈一个元素,若count存在则出栈count个元素

LINDEX [list] [index] #从左部开始 获取 第index个值
LLEN [list]	#获取列表的长度
LREM [list] [count] [value] #从左往右,删除count个value

LTRIM [list] [start] [end] #保留[start,end]的元素,删除其他元素

LSET [list] [index
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
狂神-Redis视频中的学习笔记是完整的,而且加入了个人的理解和认知。这些笔记工整清晰,适合进行记忆学习笔记内容包括以下主题: 1. Nosql概述和为什么要使用Nosql。 2. Redis的基础操作和为什么Redis是单线程且如此快速。 3. Redis的五大基本数据类型,包括String、List、Set、Hash和Zset(有序集合)。 4. Redis的三种特殊类型,包括geospatial(地理位置)、Hyperloglog和Bitmaps。 5. Redis的事务处理和Jedis的使用。 6. Redis与SpringBoot的整合。 7. Redis的配置详解。 8. Redis的持久化方式,包括RDB和AOF(Append only file)以及扩展。 9. Redis的发布订阅功能。 10. Redis的主从复制和哨兵模式。 11. 缓存穿透与雪崩问题的解决方案。 此外,Redis还通过PUBLISH、SUBSCRIBE和PSUBSCRIBE等命令实现了发布和订阅功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [狂神-Redis完整版笔记](https://download.csdn.net/download/qq_40986062/79709157)[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: 33.333333333333336%"] - *2* [Redis学习笔记(狂神)](https://blog.csdn.net/qq_43295483/article/details/119649501)[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: 33.333333333333336%"] - *3* [【狂神Redis笔记](https://blog.csdn.net/Redemption___/article/details/120799492)[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: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值