redis学习笔记

Redis概述

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value(Nosql)数据库,并提供多种语言的API,它可以用作数据库、缓存和消息中间件。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Nosql

NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

Redis的优势

  • 性能极高: Redis读的速度是110000次/s,写的速度是81000次/s。
  • 丰富的数据类型:Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • 持久化:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 原子性操作: Redis的所有操作都是原子性的,要么成功执行要么失败完全不执行。
  • 除此之外,Redis还支持集群、分布式、主从同步等配置

Redis在java web中的应用

Redis 在 Java Web 主要有两个应用场景:

  • 存储 缓存 用的数据;
  • 需要高速读/写的场合使用它快速读/写

缓存

在日常数据库操作中,读写的占比大概在9:1到7:3之间,使用读操作的次数远超写操作,每次读取数据都到数据库查询太慢了,而且会给数据库带来较大的负担,这时就需要缓存了。在初次查询数据时,将数据存储到缓存中,这样之后的查询就可以直接在缓存中读取,效率大大提升。

Redis的数据类型

String

字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以用它存储用户的邮箱、json化的对象甚至是图片。一个字符类型键允许存储的最大容量是512M。

Hash

hash 类型很像一个关系型数据库的数据表,hash 的 Key 是一个唯一值,Value 部分是一个 hashmap 的结构。

应用场景:存放对象。

List

按插入顺序排序的双向链表,类似java中的linkedList。

应用场景:任务队列。

Set

无序、不重复的集合,类似java中的hashSet。

应用场景:共同好友列表(两个set取交集、并集)

sorted Set(zset)

有序集合,在set的基础上为每一个元素增加了一个score。

应用场景:排行榜、成绩单、热点新闻。

scan命令

SCAN cursor [MATCH pattern] [COUNT count]

生产环境中,redis可能存储了大量的key,此时使用keys或smembers等命令一次性的查出所有key,会导致redis服务器阻塞数秒,为了避免这个情况,redis提供了带分页的scan命令(scan命令用于所有key,hscan、sscan、zscan则针对相应的数据类型)。

基本用法

scan 0开始一次新的迭代,redis会返回两个数据,第一个是游标参数(cursor),第二个是扫描到的数据列表。

接下来使用第一次迭代返回的游标参数进行迭代,如下面代码中的scan 17.

当游标参数为0时,表明迭代结束。

可以在scan 游标参数后面

redis 127.0.0.1:6379> scan 0
1) "17"
2)  1) "key:12"
    2) "key:8"
    3) "key:4"
    4) "key:14"
    5) "key:16"
    6) "key:17"
    7) "key:15"
    8) "key:10"
    9) "key:3"
    10) "key:7"
    11) "key:1"

redis 127.0.0.1:6379> scan 17
1) "0"
2) 1) "key:5"
   2) "key:18"
   3) "key:0"
   4) "key:2"
   5) "key:19"
   6) "key:13"
   7) "key:6"
   8) "key:9"
   9) "key:11"

COUNT参数

scan命令不保证每次返回的数据数量,不过可以通过COUNT参数设置返回数据的最大值。另外,并非每次迭代都要使用相同的 COUNT 值。

MATCH参数

可以筛选数据只返回匹配的数据,注意这个匹配操作是在迭代后进行的,也就是说可能会出现每次只能返回少量数据甚至没有数据的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷是一个教育机构,他们提供了一份关于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.csdn.net/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.csdn.net/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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值