Redis缓存技术 基础第一篇(快速入门与安装部署)

news2024/9/29 11:47:53

文章目录

  • 一、安装部署
  • 二、Redis 基础数据类型
  • 三、Redis通用命令
  • 四、String类型
  • 五、key的结构
  • 六、Hash类型
  • 七、List类型
  • 八、Set类型
  • 九、SortedSet类型

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

一、安装部署

下载地址:http://www.redis.net.cn/download/,下载最新文档版本。

本教程使用的最新文档版本为 2.8.17,下载并安装:

$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli

下面启动redis服务.

$ ./redis-server
  • redis-cli:是redis提供的命令行客户端
  • redis-server:是redis的服务端启动脚本
  • redis-sentinel:是redis的哨兵启动脚本

注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

$ ./redis-server redis.conf

redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

$ ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

这种启动属于前台启动,会阻塞整个会话窗口,窗口关闭或者按下CTRL + C则Redis停止。不推荐使用。

指定配置启动
如果要让Redis以后台方式启动,则必须修改Redis配置文件,在解压安装包的redis-6.2.6/redis.conf:下进行修改
找不到位置可以用: / + 所寻单词 查找

然后修改redis.conf文件中的一些配置:

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123321

Redis的其它常见配置:

# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

在远程服务上执行命令
如果需要在远程 redis 服务上执行命令,同样我们使用的也是 redis-cli 命令。

$redis-cli -h 127.0.0.1 -p 6379 -a "mypass"

图形化桌面客户端
GitHub上的大神编写了Redis的图形化桌面客户端,地址:https://github.com/uglide/RedisDesktopManager

不过该仓库提供的是RedisDesktopManager的源码,并未提供windows安装包。

在下面这个仓库可以找到安装包:https://github.com/lework/RedisDesktopManager-Windows/releases

安装完成后,在安装目录下找到rdm.exe文件:双击即可运行:
在这里插入图片描述
点击左上角的连接到Redis服务器按钮:
在弹出的窗口中填写Redis服务信息:
在这里插入图片描述
点击确定后即可建立连接了
在这里插入图片描述

二、Redis 基础数据类型

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:
在这里插入图片描述
Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( https://redis.io/commands )可以查看到不同的命令
中文官网如下:https://www.redis.net.cn/

下面是对不同数据结构介绍与应用,可以直接访问官网查看

三、Redis通用命令

通用指令是部分数据类型的,都可以使用的指令,常见的有:

KEYS:查看符合模板的所有key
DEL:删除一个指定的key
EXISTS:判断key是否存在
EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
TTL:查看一个KEY的剩余有效期

通过help [command] 可以查看一个命令的具体用法,例如:
在这里插入图片描述

四、String类型

String类型,也就是字符串类型,是Redis中最简单的存储类型。
其value是字符串,不过根据字符串的格式不同,又可以分为3类:

string:普通字符串
int:整数类型,可以做自增、自减操作
float:浮点类型,可以做自增、自减操作

不管是哪种格式,底层都是字节数组形式存储,只不过是编码方式不同。字符串类型的最大空间不能超过512m.
String的常见命令有:

SET:添加或者修改已经存在的一个String类型的键值对
GET:根据key获取String类型的value
MSET:批量添加多个String类型的键值对
MGET:根据多个key获取多个String类型的value
INCR:让一个整型的key自增1
INCRBY:让一个整型的key自增并指定步长,例如:incrby num 2 让num值自增2
INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
SETEX:添加一个String类型的键值对,并且指定有效期

五、key的结构

Redis的key允许有多个单词形成层级结构,多个单词之间用’:'隔开,格式如下:
在这里插入图片描述

这个格式并非固定,也可以根据自己的需求来删除或添加词条。
例如我们的项目名称叫 heima,有user和product两种不同类型的数据,我们可以这样定义key:
user相关的key:heima:user:1
product相关的key:heima:product:1

如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储:
在这里插入图片描述

六、Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构。
String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:
在这里插入图片描述

Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:
在这里插入图片描述
Hash的常见命令有:

HSET key field value:添加或者修改hash类型key的field的值
HGET key field:获取一个hash类型key的field的值
HMSET:批量添加多个hash类型key的field的值
HMGET:批量获取多个hash类型key的field的值
HGETALL:获取一个hash类型的key中的所有的field和value
HKEYS:获取一个hash类型的key中的所有的field
HVALS:获取一个hash类型的key中的所有的value
HINCRBY:让一个hash类型key的字段值自增并指定步长
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

七、List类型

Redis中的List类型与Java中的LinkedList类似,可以看做是一个双向链表结构。既可以支持正向检索和也可以支持反向检索。
特征也与LinkedList类似:
有序
元素可以重复
插入和删除快
查询速度一般
常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。
List的常见命令有:

LPUSH key  element ... :向列表左侧插入一个或多个元素
LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
RPUSH key  element ... :向列表右侧插入一个或多个元素
RPOP key:移除并返回列表右侧的第一个元素
LRANGE key star end:返回一段角标范围内的所有元素
BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

在这里插入图片描述

八、Set类型

Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:
无序
元素不可重复
查找快
支持交集、并集、差集等功能
Set的常见命令有:

SADD key member ... :向set中添加一个或多个元素
SREM key member ... : 移除set中的指定元素
SCARD key: 返回set中元素的个数
SISMEMBER key member:判断一个元素是否存在于set中
SMEMBERS:获取set中的所有元素
SINTER key1 key2 ... :求key1与key2的交集

九、SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java中的TreeSet有些类似,但底层数据结构却差别很大。SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加 hash表。
SortedSet具备下列特性:
可排序
元素不重复
查询速度快
因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

SortedSet的常见命令有:

ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
ZREM key member:删除sorted set中的一个指定元素
ZSCORE key member : 获取sorted set中的指定元素的score值
ZRANK key member:获取sorted set 中的指定元素的排名
ZCARD key:获取sorted set中的元素个数
ZCOUNT key min max:统计score值在给定范围内的所有元素的个数
ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值
ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
ZDIFF、ZINTER、ZUNION:求差集、交集、并集
注意:所有的排名默认都是升序,如果要降序则在命令的Z后面添加REV即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

校园美食地图:Spring Boot实现的探索与分享平台

第1章 绪 论 1.1课题背景 2021年处于信息高速发展的大背景之下。在今天,缺少手机和电脑几乎已经成为不可能的事情,人们生活中已经难以离开手机和电脑。针对增加的成本管理和操作,商家非常有必要建立自己的网上校园周边美食探索及分享平台,这既…

ECMAScript 与 JavaScript区别与联系

🤖 作者简介:水煮白菜王 ,一位资深前端劝退师 👻 👀 文章专栏: 我的主页 ,记录一下平时在博客写作中,总结出的一些开发技巧✍。 感谢支持💕💕💕 E…

PDF转换器哪个好?这5款PDF工具值得推荐

PDF转换器哪个好?选择一款优质的PDF转换器,能够极大地提升我们的工作效率与灵活性。它不仅能轻松实现PDF文件与Word、Excel、PPT等多种格式间的互转,还支持图片、TXT等多种格式的转换,满足多样化的办公与学习需求。此外&#xff0…

AI生成头像表情包,月入过万,简单操作

今天给大家带来的项目是AI生成表情包和头像,这个项目对于我们做ip来说是真心不错,就比如我这个头像。 为什么说每天只需要10分钟呢,那么我们继续往下看。 01、"项目介绍 ** ** 这个项目的核心其实就是使用AI生成表情包或者说生成头像…

同城搭子线下陪玩游戏系统线下陪玩靠谱的APP小程序公众号开发

同城搭子线下陪玩游戏系统、线下陪玩靠谱的APP、小程序、公众号开发,是当前社交娱乐领域的一个热门话题。这类系统的开发旨在为用户提供一个便捷、安全、有趣的线下陪玩平台,满足用户多样化的社交和娱乐需求。以下是对这一话题的详细解析: 一…

[数据库实验四]存储过程及函数

目录 一、实验目的与要求: 二、实验内容: 三、实验小结 实验中涉及到的数据及内容:数据库MySQL实验_Fxrain的博客-CSDN博客 一、实验目的与要求: 1、掌握存储过程的工作原理、定义及操作方法 2、掌握函数的工作原理、定义及…

数据结构——二叉搜索树、Map和Set

对于不同的数据结构,他们的使用场景是不一样的,map和set这两种数据结构主要用在搜索相关的场景中。学习这些之前我们先来了解一下二叉搜索树, 一、搜索树 1.1概念 二叉搜索树 又称 二叉排序树 ,它或者是一棵空树,或者…

宝塔面板,awk读取网站日志,筛选请求耗时排名前100的记录

背景 近期发现项目的访问量稳步上升 渐渐注意到一些接口响应时间过长,在此需设计读取接口耗时较长的日志(nginx 的 access.log日志) 在此将实现步骤记录如下,方便道友参考 . 环境配置 宝塔面板 Nginx 1.20.2 PHP-7.2.33实现步…

认知战认知作战:认知战目标对手分析,你需要知道的目标对手分析SOP

认知战认知作战:认知战目标对手分析,你需要知道的目标对手分析SOP 认知战认知作战:认知战目标对手分析你需要知道的目标对手分析SOP 关键词:认知战, 目标对手分析, 数据情报搜集, 自我审视, 洞悉对手, 精准攻击策略, 行动规划, …

【国家博物馆应对黄牛办法解析】

一 国家博物馆预约流程及独家预约问题 微信公众号的预约引导页,有微信小程序和PC端预约两种方式: PC端预约和微信小程序明明是两中方式,现在却变成一种了, 为何不能在支付宝小程序预约? 独家的背后往往有故事&#x…

从零开学C++:二叉搜索树

引言:在本篇博客当中,我们会将关于二叉树的进阶结构——二叉搜索树,强大的搜索效率让它在数据结构当中变得十分重要,让我们一起来进行学习吧! 更多有关C的知识详解可前往个人主页:计信猫 一,二叉…

Android开发版本更新和强制更新效果

Android开发版本更新和强制更新效果 版本更新基本每个app都有,这里加多个强制更新效果 一、思路: 用okhttp下载接口返回的apk下载地址,这样有进度条 二、效果图: Android开发教程实战案例源码分享-版本更新和强制更新效果 三、…

建筑师设计师必备的14个AI工具

从制作复杂的设计到可视化突破性的建筑创新,建筑领域一直与技术紧密交织。随着我们深入数字时代,建筑师和设计师利用尖端人工智能 (AI) 工具的力量来革新他们的工艺也就不足为奇了。但是,随着市场上 AI 工具的大量出现,哪些工具真…

Pymsql 插入数据时报错 Unkown column xxxx in field list

如图 从文字来看,它是说我们表里没有“247dxxxxxxx”这个字段,但问题是我建表的时候本来就没建这个字段,这一串字符是我要插入到“id”这个字段里的内容,它怎么就把它当成字段了呢? 后来发现是在传入参数的时候&#…

Java 发布jar包到maven中央仓库(2024年9月保姆级教程)

文章目录 前言一、账号准备1. 注册登录账号2. 新建命名空间3. 验证命名空间4. 生成令牌5. 为 maven 设置令牌二、GPG准备1. 下载GPG2. 发布证书2.1 新建证书2.2 发布证书到服务器2.3 验证发布三、发布jar包到中央仓库1. 编辑项目pom文件2. 打包上传3. 发布jar包4. 搜索我们的ja…

分片上传和断点续传

今天介绍两个概念: 1、分片上传 分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件。 2、断点续传 断点续…

C语言课程设计题目三:图书管理系统设计

题目三:图书管理系统设计 图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。 主要功能: 新进图书基本信息的输入。图书基本信息的查询。对撤销图书信息的删除。为借书人办理注册。办理借书手续。办理…

数据流处理技术与Flink框架

一数据流 数据流定义: 数据流(Data Stream)是指数据以连续不断的方式到达和处理的序列。在现实世界中,许多数据来源都是以流的形式存在,比如: 1. 用户行为:用户在网站上的点击流、移动应用中…

微软 Win11 RP 226x1.4247(KB5043145)预览版发布!

系统之家于9月25日发出最新报道,微软面向Release Preview频道的用户发布了Win11的KB5043145更新。系统更新后版本号提升为22621.4247和22631.4247。此次更新新增多项功能,例如用户播放媒体时,媒体控件会显示在锁屏中央的下部。以下跟随小编看…

LeetCode2207解题思路

题目描述 字符串中最多数目的子序列 解题思路: 题目要求我们找到在 text 中 找到最多可组成 pattern 的字符串个数,并且允许在 text 的任意位置插入 pattern 中一个字符,也就是说我们只需要考虑 text 中的 pattern 含有的字符即可。例如示例…