学习视频:

2022最新版Redis入门到精通 - 网易云课堂

学习笔记:

目录

一、初识Redis-认识NoSQL

1.认识NoSQL

2.认识Redis

3.安装Redis

二、Redis常见命令

2.1 Redis数据结构介绍

2.2 通用命令

2.3 不同数据结构的操作命令

2.3.1 String类型(值是String字符串)

2.3.2 Hash类型(值是Hash表)

2.3.3 List类型(值是List集合)

问题:如何利用List结构模拟一个阻塞队列?

2.3.4 Set类型(底层是Hash表)

2.3.5 SortedSet类型(可排序的集合,底层是一个跳表(SkipList)加hash表)

三、Redis的Java客户端Clients | Redis

3.1 Radis的Java客户端-Jedis客户端

3.1.1Jedis客户端快速入门

3.1.2Jedis客户端-Jedis的连接池

3.2 Radis的Java客户端-SpringDataRedis客户端

3.2.1认识SpringDataRedis

3.2.1SpringDataRedis快速入门

3.2.2Redis的Java客户端-Redis Template的RedisSerializer序列化方式

3.3 Radis的Java客户端-StringRedisTemplate

总结:

3.4 Radis的Java客户端-RedisTemplate操作Hash类型


一、初识Redis-认识NoSQL

1.认识NoSQL

SQL语言,是结构化查询语言(Structured Query Language)的简称。

结构化不建议去修改,最好在表建立之初,就建立好,不然后续如果要修改可能会在成锁表。

关系型数据库,就是表和表之间是有联系的:

#2关联的(Relational):                    无关联的#2:通过json文档的嵌套的一种形式去记录数据:

                 

#3SQL查询:无论什么SQL数据库(MySQL、Orecal),查询的语法是固定的,都能用一种语法查询。

非SQL#3:查询语法是不固定的,不统一的。如下(Redis:命令、MongoDB:函数、elasticsearch:http请求),优点就是简单、没有复杂的语法需要学习。缺点:不统一,各不相同。

#4事务ACID:所有的关系型数据库都是满足A、C、I、D。ACID为原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)的总称。(对安全性要求较高,就应该优先选择SQL关系型数据库。

SQL数据库的ACID特性

事务BASE#4:BASE:基本可用(BA)、软状态(S)、最终一致性(E)。NoSQL中的“BASE”特性

总结:

2.认识Redis

Redis6.0仅仅针对网络请求处理这一部分是多线程的,其他核心的命令的执行部分依然是单线程的。

Redis是基于C语言编写的,所以具备良好的编码。

速度快、性能高的核心的原因是基于内存,所以速度快。

基于内存的缺点是,一旦断电,数据无法保存。所以加了数据持久化,一段时间保存一次数据。

3.安装Redis

先安装虚拟机:

(43条消息) 虚拟机安装:“VMware-workstation-full-16.2.4”和“镜像”下载安装_时时师师的博客-CSDN博客

再安装Redis:

(53条消息) Redis安装说明_时时师师的博客-CSDN博客

二、Redis常见命令

2.1 Redis数据结构介绍

先学会怎么用这些数据类型,然后学习什么时候使用这些数据类型。

要学习命令行,肯定要先学习帮助文档。(学习的时候不是死记硬背,而是参考文档来学习。边学,边查询。)

在官网https://redis.io/commands可以查看到不同的命令。可以看到在redis中的这些命令都是分组去学习的。一组一组的来,就能看到了。

除了在官方网站去看,在虚拟机的终端上用命令行(没有文档介绍的详细。最好不用),也能看到这些帮助文档。

#查看通用的命令

192.168.122.1:6379> help @generic

#分组单独查询

192.168.122.1:6379> help @String

192.168.122.1:6379> help @List

2.2 通用命令

通用命令是任何数据类型都可以使用的命令,常见的有:

到官方文档去查看,通用的是放在Generic。

也可以通过命令行:#查看通用的命令192.168.122.1:6379> help @generic

常用的几个命令:

(虚拟机的终端上)写到一半的时候按Tab键是可以自动补全的。

  • KEYS:Find all keys matching the given pattern(查看符合模版的所有key)。不建议在生产环境设备上使用。

(模糊查询:*代表多个字符位或所有。精准查询:?代表一个字符位。)

  • DEL:删除一个指定的key。(Delete a key)(或者批量删除。)

返回值代表的是删除的key的数量,因为已经删除过看k1、k2了,所以不存在,删除0个返回值就是0。

MSET 批量插入键值。

  • EXISTS:判断一个key是否存在。(确定,查明Determine if a key exists)

  • EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除。单位是秒。

(Set a key's time to live in seconds)(默认key的有效期是永久有效。)

建议存储数据时,都设置有效期。)

(到期自动删除,基于内存存储的redis就可以节省redis的有效空间,例如验证码,只有效60s,就可以删除。)

  • TTL:查看一个KEY的剩余有效期。单位是秒。(Get the time to live for a key in seconds)

(当一个key的有效期变成-2的时候,代表这个key已经被移除了。)

(当一个key的有效期变成-1的时候,代表这个key永久有效。)

即直接存储,一个key和值,有效期就是-1。永久有效。

2.3 不同数据结构的操作命令

redis是键值型的数据库,只不过它的值的类型五花八门。最简单的一种数据类型String。

2.3.1 String类型(值是String字符串)

String类型的常见命令:

增、查、批量增加、批量查找;

自增、步长自增、浮点步长自增;

新增、新增指定有效期。

  • DECRBY:自减并指定步长。

执行结果:

192.168.1.107:6379> set name ai
OK
192.168.1.107:6379> get name
"ai"
192.168.1.107:6379> set name ci
OK
192.168.1.107:6379> get name 
"ci"
192.168.1.107:6379> MSET k1 v1 k2 v2 k3 v3
OK
192.168.1.107:6379> MGET name age k1 k2 k3 
1) "ci"
2) "20"
3) "v1"
4) "v2"
5) "v3"
192.168.1.107:6379> INCR age
(integer) 21
192.168.1.107:6379> get age
"21"
192.168.1.107:6379> INCRBY age 3
(integer) 24
192.168.1.107:6379> get age
"24"
192.168.1.107:6379> INCRBY age -2
(integer) 22
192.168.1.107:6379> INCRBY age -2
(integer) 20
192.168.1.107:6379> DECRBY age 3
(integer) 17
192.168.1.107:6379> set score 10.1
OK
192.168.1.107:6379> INCRBYFLOAT score 2.6
"12.7"
192.168.1.107:6379> help setnx

SETNX key value
  summary: Set the value of a key, only if the key does not exist
  since: 1.0.0
  group: string

192.168.1.107:6379> key *
(error) ERR unknown command 'key', with args beginning with: '*' 
192.168.1.107:6379> keys *
1) "k3"
2) "age"
3) "k2"
4) "k1"
5) "name"
6) "score"
192.168.1.107:6379> setnx name lisi
(integer) 0
192.168.1.107:6379> get name
"ci"
192.168.1.107:6379> setnx name2 lisi
(integer) 1
192.168.1.107:6379> get name2
"lisi"
192.168.1.107:6379> setex name 10 jack
OK
192.168.1.107:6379> get name
"jack"
192.168.1.107:6379> ttl name
(integer) -2
192.168.1.107:6379> setex name3 sam 10
(error) ERR value is not an integer or out of range
192.168.1.107:6379> setex name3 10 sam
OK
192.168.1.107:6379> ttl name3
(integer) 4
192.168.1.107:6379>

问题:

key的结构:层级结构!!用“:”隔开。

执行结果:

192.168.1.107:6379> set heima:user:1 '{"id":1,"name":"Jack","age":21}'
OK
192.168.1.107:6379> set heima:user:2 '{"id":2,"name":"Rose","age":18}'

192.168.1.107:6379> set heima:product:1 '{"id":1,"name":"小米11","price":4999}'
OK

192.168.1.107:6379> set heima:product:2 '{"id":2,"name":"荣耀6","price":2999}'
OK

192.168.1.107:6379> keys *
 1) "k3"
 2) "heima:product:1"
 3) "score"
 4) "heima:user:2"
 5) "name2"
 6) "heima:user:1"
 7) "age"
 8) "k2"
 9) "k1"
10) "heima:product:2"
192.168.1.107:6379>

图形化界面的客户端里:

2.3.2 Hash类型(值是Hash表)

执行结果:

user:3没有sex这个属性,所以可以使用HSETNX 添加sex。

2.3.3 List类型(值是List集合)

执行结果:

LPOP、RPOP:左侧、 右侧取得并移除:

BLPOP、BRPOP等待指定时间,获取后删除:

问题:如何利用List结构模拟一个阻塞队列?

栈:先进后出。(既是入口也是出口<-框子——》框底)

队列:先进先出。(入口<-框子——>出口)

2.3.4 Set类型(底层是Hash表)

执行结果:

案例练习:                                                            执行结果:

2.3.5 SortedSet类型(可排序的集合,底层是一个跳表(SkipList)加hash表)

多了一个score元素。

还有很多命令,可以去官网看看:

去控制台看看:help @sorted-set 或help @Sorted-Set

案例:

执行结果:ZADD stus 85 Jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles

默认升序:

三、Redis的Java客户端Clients | Redis

在Redis官网中提供了各种语言的客户端, 下图中的地址作废,变成Clients | Redis

官网上面的文字说推荐我们使用带红心

2022最新版Redis入门到精通(云课堂视频学习笔记)相关推荐

  1. 数独游戏技巧从入门到精通_中国茶艺技巧:500集从入门到精通教程,视频+素材+笔记...

    中国茶艺技巧:500集从入门到精通教程,视频+素材+笔记 学习茶艺可以增加生活中的兴趣爱好,多一门技能,多一项生存能力,将传统文化进行一种简单快乐的传播.以生活为中心,将喜爱为半径,沏一杯美好生活茶. ...

  2. 从入门到精通的Java进阶学习笔记整理,不愧是大佬

    前言 一位小伙伴准备了许久的阿里Java面试,原以为能够顺利拿下offer,但在第三面还是被摁在地上反复摩擦,丧气一段时间后,小伙伴调整了心态重新尝试了一下,最终拿下了offer,今天小编把这位小伙伴 ...

  3. 《Java从入门到精通》第九章学习笔记

    第9章 类的高级特性 一.抽象类 抽象类只声明方法的存在,不能被实例化,就是说抽象类不能创建其对象,在定义抽象类时要在class前面加上abstract关键字. 1 /*定义一个抽象类Fruit,并定 ...

  4. java从入门到精通第11章_《Java从入门到精通》第十章学习笔记

    第10章 Java集合类 一.概述 Java中的java.util包中提供了一些集合类,也被称为容器,不同于数组,集合的长度是可变的,存放的是对象的引用.常用的集合有List集合.Set集合.Map集 ...

  5. java从入门到精通_Java---开发从入门到精通,分享视频学习教程

    主要内容 Java中的方法 递归算法 接收键盘中的输入 面向对象的本质 我的第一个类:Student 垃圾回收机制 构造方法 方法的重载 static声明的静态属性和静态方法 this关键字的使用 笔 ...

  6. 《Android入门到精通》第一章学习笔记总结

  7. 安卓系统培训!从入门到精通的Android进阶学习笔记整理,已整理成文档

    热修复技术是Android开发中比较高级的知识点,是中级开发人员通向高级开发中必须掌握的技能.本篇重点讲解热修复热修复的原理,各大热修复框架的比较,以及自身产品中热修复功能的实践. 一.什么是热修复? ...

  8. 用Python和Pygame写游戏-从入门到精通(6)学习笔记

    虽然是基础,这里还是要罗嗦一下,之前说的RBG图像,在游戏中我们往往使用RGBA图像,这个A是alpha,也就是表示透明度的部分,值也是0~255,0代表完全透明,255是完全不透明,而像100这样的 ...

  9. apk开发用什么语言!从入门到精通的Android进阶学习笔记整理,醍醐灌顶!

    行业激烈变化时,恰恰是机会最多的时候 坦白讲,许多人骨子里害怕变化和竞争. 其实大可不必. 一来,怕也没用嘛.二来,变化越快,组合要素增加了,意味着新的工作机会越多. 就像传统媒体VS新媒体. 放在1 ...

最新文章

  1. phpcms的安装以及简单使用
  2. TCP释放连接的四次挥手过程
  3. 关于机器学习的领悟与反思
  4. 推荐一个用Java实现监控手机短信、来电、App的开源项目
  5. java类中serialversionuid 作用 是什么?举个例子说明
  6. C 中命名空间的五大常见用法
  7. 零基础学Java的10个方法
  8. java在文档末尾添加_如何在打开表单后将子文件添加到Word文档的末尾?
  9. 实验吧——Recursive
  10. Javaweb开发之git资料
  11. 一个简单的人物图片相似对比程序
  12. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.23
  13. 转载:在Python 3中使用深度森林(Deep Forest)进行分类
  14. Vue3 正式版要来了?
  15. 磁芯电流探头降额功率的主要原因是什么?
  16. Android实现序列化方式
  17. 好莱坞十大经典动作片
  18. 微软2016校园招聘4月在线笔试1-Font Size
  19. 软件测试面试题【变态逻辑题】,盘点那些大厂面试必出变态逻辑题
  20. 【8.16模拟赛.7235】【洛谷P7413】[USACO21FEB] Stone Game G【博弈论】

热门文章

  1. Chrome浏览器全屏打开指定网页以及开机自启
  2. (转)我与我周旋久,宁做我!
  3. 获取主机RDP连接凭据
  4. 【考研政治】史纲总结
  5. python爬虫多线程下载_Python爬虫之多线程下载豆瓣Top250电影图片
  6. 尾接杆工艺及铣床夹具设计(论文 CAD图纸 答辩PPT 任务书 工序卡)
  7. 蒋雯晴不准看我blog
  8. 读《史蒂夫•乔布斯传》(一)
  9. 2021年Q2邮件安全报告:钓鱼邮件季环比增长21.27%
  10. 高清视频转换器,任意格式互转方法!