Redis学习笔记(狂神说)

请添加图片描述请添加图片描述

因为热爱所以坚持,因为热爱所以等待。熬过漫长无戏可演的日子,终于换来了人生的春天,共勉!!!

一、Nosql概述

为什么要用Nosql?

1.单机MySQL的年代

在这里插入图片描述
90年代,一个基本的网站访问量一般不会太大,单个数据库完全够用!!!
那个时候更多是用静态html就足够了,服务器基本没有太大的压力.
思考一下:整个网站的瓶颈是什么?
1.数据量如果太大,一个机器放不下
2.数据的索引(B+tree) ,一个机器内存也放不下
3.访问量(读写混合),一个服务器承受不了
所以当出现这些问题的时候,必须选择更高级的手段来处理问题!!!

2.Memchached(缓存)+MySQL+垂直拆分(读写分离)

在这里插入图片描述

3.分库分表 + 水平拆分 + MySQL集群

在这里插入图片描述

4.如今的年代

MySQL等关系型数据库都不够用了! 数据量很多,变化很快!
MySQL有的使用它来存储一些较大的文件,博客,图片! 数据表库很大,效率就低了!

在这里插入图片描述

5.为什么要用NoSQL!!!

NoSQL == Not only SQL
泛指非关系型数据库,随着web2.0互联网的诞生! 传统的关系型数据库很难对付! 尤其是大规模的高并发的项目! 暴露出问题很多难以克服的问题,NoSQl在当今大数据环境下发展的十分迅速,Redis是发展最快的!

6.NoSQL特点

解耦!
1.方便扩展(数据之间没有关系,很好扩展)
2.大数据量高性能(Redis一秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高!)
3.数据类型是多样型的! (不需要事先设计数据库! 随取随用! )

7.NoSQL的四大分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四者对比!!!

在这里插入图片描述

二、Redis入门

1.Redis概述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.基础操作:

**
1.select [数字] 选择使用哪个库(默认是0,默认有16个,0 ~ 15)
2.dbsize 查看当前存了多少调数据
3.set [key - value] 存数据
4.get [key] 按键取数据
5.keys * 查看所有的键
6.flushdb 清空当前数据库
7.flushall 清楚全部数据库的内容
在这里插入图片描述

3.Redis是单线程

Redis是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,肌肉可以使用单线程来实现,就使用单线程了!

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

三、五大基本数据类型

在这里插入图片描述

Redis-Key

**
1.exists [key] 判断当前键是否存在
2.del [key] 删除键
2.move [key - db ] 移动键到第几个数据库(db从0开始)
3. expire [key - time] 设置key的过期时间,单位是秒
4. ttl [key] 查看键的剩余时间
5. type [key] 查看当前键的类型**

更多操作见:

String类型

**
1.append [key - value] 给键为key的value值追加字符
2.getrange [key - start end] 截取从start 到 end ,例如 getrange Ivring 0 2 截取小标[0-2]的长度,左闭右闭
3.getset [key - value] 将给定 key 的值设为 value ,并返回 key 的旧值(old value)
4.mget [key1 key2 …] 获取多个key的value
5.setex [key seconds value] 设置有过期时间的key - value
6.setnx [key - value] 只有在 key 不存在时设置 key 的值。
7.setrange [key offset value] 从offset下标位置开始覆盖
8.mset [key1 value1 key2 value2 ] 设置多组key value
9.incr [key] 数字值增加1
10.decr [key] 数字值减少1
11.incrby [key increment] 增加按给定的increment增量
12.decrby [key decrement] 减少按给定的decrement减量**
在这里插入图片描述
在这里插入图片描述

更多操作见: https://www.runoob.com/redis/redis-strings.html

List类型

在这里插入图片描述
**
1.lpush [key …]将一个或多个插入列表的头部
2.lrange [key start end] 从左往右获取list的值
3.rpush [key …]将一个或多个插入列表的尾部
4.lpop [key] 移除list头部第一个元素
5.rpop [key] 移除list尾部第一个元素
6.lindex [key index] 按下标index获取一个值
7.llen [key] 获取列表的长度
8.lrem [key count value] 按照value值从list中移除count个值
9.ltrim [key start end ] 通过下标截取指定的长度,list被改变了,只剩下修改后的
10.rpoplpush [list anotherList] 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
11.lset [key index value] 将list的index下标的值换成新的值(不存在报错)
12.linsert [key before/after strings otherStrings] 在strings之前或之后插入otherStrings
**
在这里插入图片描述

Set类型

1.sadd [key value] 往set中加元素
2.smembers [key] 查看set所有值
3. scard [key] 查看元素个数
4. srem [key] 移除set中的元素
5. srandmember [key count] 随机选出set中count个数的元素
6. spop [key count] 随机删除set中count个数的的元素
7.集合交,并,差运算

127.0.0.1:6379> sadd set a
(integer) 1
127.0.0.1:6379> sadd set b
(integer) 1
127.0.0.1:6379> sadd set c
(integer) 1
127.0.0.1:6379> sadd set2 a
(integer) 1
127.0.0.1:6379> sadd set2 b
(integer) 1
127.0.0.1:6379> sdiff set set2 // 求差集
1) "c"
127.0.0.1:6379> sinter set set2 //求交集
1) "a"
2) "b"
127.0.0.1:6379> sunion set set2 //求并集
1) "a"
2) "b"
3) "c"
4) "jiajia"

应用:
在这里插入图片描述
更多命令: https://www.runoob.com/redis/redis-sets.html

Hash类型

Map集合,key - map 时候这个值是一个map集合! 本质和String类型没有太大的区别!!!
1.hset [key filed value] 存入哈希一个键值对(field-value)
2.hdel [key ]
3.hmset [key filed1 value1 filled2 value2] 同时存入多个filed-value 到哈希中
4.hget [key filed] 获取存储在哈希表中指定 键(filed) 对应的值
5. hmget [key field1 …field2] 获取所有给定字段(filed)的值
6. hgetall [key] 获取在哈希表中指定 key 的所有字段和值
7. hlen [key] 获取哈希字段的数量
8. hsetnx [key filed value] 只有在字段 field 不存在时,设置哈希表字段的值
9. hvals [key 获取hash中所有的值
10.hincrby [key filed increment] 将hash中filed对应的数值型加指定的increment增量

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Free的午后

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

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

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

打赏作者

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

抵扣说明:

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

余额充值