首页 > 数据库 >[Redis] 01-Redis快速入门

[Redis] 01-Redis快速入门

时间:2024-03-08 18:33:48浏览次数:243  
标签:01 入门 元素 Redis value Set key 客户端

一、Redis简介

  • Redis属于键值对(key-value)数据库
  • Redis中所有的数据都是以key-value的形式存储在内存中的
  • 所以读写Redis非常的快,在高并发的场景下,性能非常的好

二、Redis服务端(redis-server)的安装

省略。建议使用docker安装。
Docker安装redis(保姆级教程&图文并茂)-腾讯云开发者社区-腾讯云

三、Redis客户端(redis-cli)的使用

Redis是C/S架构的数据库,前面我们启动了Redis服务端的进程,接下来我们可以通过Redis客户端来操作Redis服务端。
Redis客户端包括以下3种形式:

  1. 命令行客户端
  2. 图形化界面客户端
  3. 编程语言客户端

命令行客户端

redis安装完成后,会自带命令行客户端:redis-cli
如果我们是用docker安装,则执行命令:docker exec -it redis redis-cli

图形化界面客户端

Github:https://github.com/uglide/RedisDesktopManager

编程语言客户端

Redis支持很多的编程语言来操作。目前只看Java语言的客户端。
Redis的Java客户端很多,官方推荐的有三种:

  1. Jedis
  2. Lettuce
  3. Redisson

Spring整合Redis:Spring对Redis客户端进行了整合,提供了__Spring Data Redis_,在spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis。_

四、Redis数据类型

注意:key永远是字符串类型。

字符串

String类型,也是字符串类型,是Redis中最简单的存储类型。String是最基本的key-value结构,key是唯一标识,value是具体的值,value其实不仅是字符串,也可以是数字(整数或浮点数),value最大能够容纳的数据大小是512M
不过根据字符串的格式不同,又可以分为3类:

  • string:普通字符串
  • int:整数类型,可以自增、自减操作。
  • float:浮点类型,可以自增、自减操作。
    | KEY | VALUE |
    | --- | --- |
    | msg | hello world |
    | num | 10 |
    | score | 99.9 |
    | json | {"name":"keyongkang", "age":23} |

String的常见命令:

NX:表示 "Not Exist",用于在执行某些命令时指定如果某个键不存在时要执行的操作。
MSET 表示 "Multiple SET",它用于一次性设置多个键值对。
TTL key 表示查看该key还有多久过期。
KEYS:Find all keys matching the given pattern。
STRLEN key:计算长度。
GETRANGE:获取字符串的子串。

操作:

列表


List列表式简单的字符串列表(链表的每个节点是一个字符串)按照插入顺序排序,可以从头部或者尾部向List列表中添加元素。
List本质上是一个双向链表
特点:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

List常见的命令:

列表只能通过LRANGE来遍历,不能通过GET(操作字符串的)。
LSET:修改元素。
LLEN:获取列表长度。
LINDEX:根据索引查对应元素。
LPOS:根据元素的值查找索引。

集合

Set类型是一个无序并唯一的集合,它的存储_不会按照插入的先后顺序进行存储_。
Set类型除了支持集合内的增删改查操作外,同时还支持集合取交集、并集、差集。

Set类型和List集合的区别:

  1. List可以存储重复元素,Set只能存储非重复元素。
  2. List是按照元素的先后顺序存储元素的,而Set则是无序方式存储元素的。

Set的常见命令:

SPOP:随机从Set中删除一个元素。
Set没有修改操作,可以先删除再添加来实现。
SMISMEMER:判断多个元素是否在集合中。
SMOVE:将元素从一个集合移到另一个集合中。
SINTER:求交集。
SDIFF:求差集。
SUNION:求并集后且去重。
SINTERSTORE:将交集结果保存到新的集合中。
SDIFFSTORE:将差集结果保存到新的集合中。
SUNIONSTORE:将并集结果保存到新的集合中。

哈希


Hash是一个键值对(key-value)集合,其value是一个无序字典,其中value的形式如:value=[{field1, value1},{field2,value2} ...]类似于Java中的HashMap结构。

Hash常见的命令:

HDEL:删除操作。
HSET:修改操作。
HVALUE:获取一个hash类型的key中所有的value。
HMGET:批量获取。
HLEN:获取一个hash类型对应的哈希表长度。

有序集合

Redis的SortedSet是一个可排序的Set结合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。
SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。

SortedSet具备下列特性:

  • 可排序
  • 元素不重复
  • 查询速度快

SortedSet的常见命令:

ZREMRANGEBYSCORE:删除指定score范围内的元素。
ZPOPMAX:删除分数最高的元素。
ZPOPMIN:删除分数最低的元素。

五、通用命令

六、key的结构

Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?
我们可以通过给key添加前缀加以区分,这个前缀有一定的规范:
Redis的key允许有多个单词形成层级结构,多个单词之间用':'隔开,格式如下:

项目名:业务名:类型:id

标签:01,入门,元素,Redis,value,Set,key,客户端
From: https://www.cnblogs.com/keyongkang/p/18061623

相关文章

  • C语言0基础入门游戏辅助开发—学习笔记02
    C语言0基础入门游戏辅助开发—学习笔记02PS:这里仅作为本人学习过程中的随笔。数据类型、sizeof运算符数据类型数据类型是在关键字内的,或者说关键字包含数据类型。数据类型有哪些程序中的代码和数据都是以二进制的形式存储的,对计算机系统和硬件而言,数据类型的概念不存在,这......
  • 老鹅分享:海量后台开发——从入门到放弃
    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!cnblogs博客zhihuGithub公众号:一本正经的瞎扯大家好,我曾是一名鹅厂的后台开发工程师。从2013年开始,我就在准备一个后台开发方向的培训文档,并多次在内部培训和腾讯课堂上分享过。可是,当《数据密集型应用系统设计......
  • P8630 [蓝桥杯 2015 国 B] 密文搜索
    网站:https://www.luogu.com.cn/problem/P8630代码如下:主要是用了map的思想#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<string>#include<string.h>#include<iomanip>#include<map>#incl......
  • redis自学(13)阻塞IO与非阻塞IO
    阻塞IO顾名思义,阻塞IO就是两个阶段都必须阻塞等待:  调用revfrom函数的时候,内核没有数据,有两种处理结果,一个是返回失败的信息,一个是等待,而阻塞IO的选择是等待。可以看到,阻塞IO模型中,用户进程在两个阶段都是阻塞状态。非阻塞IO顾名思义,非阻塞IO的recvfrom操作会立即返回结......
  • Vulnhub内网渗透Jangow01靶场通关
    详细请见个人博客靶场下载地址。下载下来后是.vmdk格式,vm直接导入。M1请使用UTM进行搭建,教程见此。该靶场可能出现网络问题,解决方案见此信息搜集arp-scan-l #主机发现ip为192.168.168.15nmap-sV-A-p-192.168.168.15 #端口扫描发现开放了21ftp和80http端口,对......
  • 入门教学指南
    代码类教程是我作为一名计算机科学与技术专业的大四学生,对于初学者而设计的。我明白作为新手入门编程可能会面临一些困惑和挑战,因此我希望通过这个教程来帮助他们更好地理解和掌握基础概念和技巧。这个教程的目标受众是那些刚开始学习编程或者对于网页开发感兴趣的小白。我将尽量......
  • 01引入方式
    1<!DOCTYPEhtml>2<htmllang="en">3<head>4<metacharset="UTF-8">5<metaname="viewport"content="width=device-width,initial-scale=1.0">6<title>Document......
  • redis为什么不能存null
    Redis是一个基于内存的快速数据存储系统。它是一个开源的、内存中的数据库,允许使用者在其内存中存储数据,并提供高度可用性、高性能以及可扩展性的支持。Redis支持多种数据结构,包括字符串、列表、哈希、集合等,并适用于各种场景,包括缓存、会话存储、队列等。Redis为什么不能存n......
  • 第101天-python-flask简介
    1.flask1.1、flask简介Flask简介:Flask诞生于2010年,是用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。其WSGI工具箱采用Werkzeug(路由......
  • 01_单例模式
    单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。在单例模式中,类会提供一个静态方法来获取其唯一实例,如果该实例不存在则会创建一个新实例,否则返回已有的实例。publicsealedclassCounter{publicCounter(){......