任职要求中的熟悉Redis,你真的熟悉吗?
mhr18 2024-09-27 12:19 25 浏览 0 评论
一、NoSQL
1.1、NoSQL引言
NoSQL( Not Only SQL ),意即不仅仅是SQL, 泛指非关系型的数据库。Nosql这个技术门类,早期就有人提出,发展至2009年趋势越发高涨。
1.2、为什么是NoSQL
随着互联网网站的兴起,传统的关系数据库在应付动态网站,特别是超大规模和高并发的纯动态网站已经显得力不从心,暴露了很多难以克服的问题。如商城网站中对商品数据频繁查询、对热搜商品的排行统计、订单超时问题、以及微信朋友圈(音频,视频)存储等相关使用传统的关系型数据库实现就显得非常复杂,虽然能实现相应功能但是在性能上却不是那么乐观。nosql这个技术门类的出现,更好地解决了这些问题,它告诉了世界不仅仅是sql。
1.3、NoSQL的四大分类
1.3.1、键值(Key-Value)存储数据库
1.3.1.1、说明
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。
1.3.1.2、特点
- Key/value模型对于IT系统来说的优势在于简单、易部署。
- 如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。
1.3.1.3、相关产品
- Tokyo Cabinet/Tyrant,
- Redis
- SSDB
- Voldemort
- Oracle BDB
1.3.2、列存储数据库
1.3.2.1、说明
这部分数据库通常是用来应对分布式存储的海量数据。
1.3.2.2、特点
键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。
1.3.2.3、相关产品
- Cassandra
- HBase
- Riak.
1.3.3、文档型数据库
1.3.3.1、说明
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
1.3.3.2、特点
以文档形式存储。
1.3.3.3、相关产品
- MongoDB
- CouchDB
- MongoDb(4.x)
- SequoiaDB(国内)
1.3.4、图形(Graph)数据库
1.3.4.1、特点
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。
1.3.4.2、相关产品
- Neo4J
- InfoGrid
- Infinite Graph
1.4、NoSQL应用场景
- 数据模型比较简单
- 需要灵活性更强的IT系统
- 对数据库性能要求较高
- 不需要高度的数据一致性
二、Redis入门
2.1、概述
redis是一个内存型的数据库
2.2、Redis特点
- Redis是一个高性能key/value内存型数据库。
- Redis支持丰富的数据类型 。
- Redis支持持久化 。
- Redis单线程,单进程。
2.3、Redis的安装(Linux版)
2.3.1、下载Redis源码包
下载地址直达
2.3.2、上传并解压
tar -zxvf redis-4.0.10.tar.gz
2.3.3、安装gcc
yum install -y gcc
2.3.4、进入解压缩目录
make MALLOC=libc
2.3.5、编译完成后执行如下命令
make install PREFIX=/usr/redis
2.3.6、进入/usr/redis目录启动redis服务
./redis-server
一旦出现这个页面就代表Redis启动了!
2.3.7、进入bin目录执行客户端连接操作
./redis-cli –p 6379 (终端不展示中文)
/redis-cli –p 6379 --raw (终端展示中文)
2.4、Redis安装的细节
redis启动服务的 细节
如果直接使用./redis-server方式启动使用的是redis-server这个shell设置,我们在启动的时候,要先启动服务器 ./redis-server 然后克隆窗口(不可以按ctrl+c暂停),在新窗口中启动客户端 ./redis-cli –p 6379
如何在启动redis时指定配置文件启动
默认在reidis安装完成之后在安装目录没有任何配置文件,需要在源码目录中复制redis.conf配置文件到安装目录,具体操作:
- 进入源码目录,复制文件
cp redis.conf /usr/redis
- 进入/usr/redis的安装目录查看复制配置文件
cd /usr/redis
ls
- 进入bin目录加载配置启动
./redis-server ../redis.conf
redis中库的概念
库是database 用来存放数据的一个基本单元,一个库可以存放key-value键值对,redis中每一个库都有一个唯一名称(编号),从0开始,默认库的个数是16个库,库的编号0-15,默认使用的是0号库。 我们可以使用命令来切换库,每个库是相互隔离的,每个库都可以有相同或者不同的key和value,互不影响。
# 切换库
select dbid(库编号)
# 清空当前库
flushDB
# 清空所有库
flushAll
开启Redis远程连接
- 修改配置文件开启远程连接
vim redis.conf
- 修改配置,按两下键盘上的g到文章的第一个字母,然后在ntework章节中找到bind属性,默认:bing 127.0.0.1 只允许本机访问,修改为:
# 允许一切客户端访问
bing 0.0.0.0
- 以配置文件的方式重启Redis
./redis-server ../redis.conf
- 可以在客户端中关闭Redis
# (切记前面有一个空格)
hutdown
三、Redis数据库相关指令
3.1、数据库操作指令
3.1.1、库的说明
Rsdis默认配置启动Redis服务后,默认会存在16个库,编号从0-15,可以使用select 库的编号 ,来选择一个Rsdis的库。
seelect 库编号
3.1.2、清空库
# 清空当前的库
FLUSHDB
# 清空全部的库
FLUSHALL
3.1.3、redis客户端显示中文
./redis-cli -p 7000 --raw
3.2、操作key的相关指令
3.2.1、DEL指令
3.2.1.1、语法
DEL key [key ...]
3.2.1.2、作用
删除给定的一个或多个key 。不存在的key 会被忽略。
3.2.1.3、返回值
被删除key的数量。
3.2.2、EXISTS指令
3.2.2.1、语法
EXISTS key
3.2.2.2、作用
检查给定key是否存在。
3.2.2.3、返回值
若key 存在,返回1 ,否则返回0。
3.2.3、EXPIRE指令
3.2.3.1、语法
EXPIRE key seconds
3.2.3.2、作用
为给定key设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除。他的时间复杂度为O(1)。
3.2.3.3、返回值
设置成功返回1。
3.2.4、PEXPIRE指令
3.2.4.1、语法
PEXPIRE key milliseconds
3.2.4.2、作用
这个命令和EXPIRE 命令的作用类似,但是它以毫秒为单位设置key 的生存时间,而不像EXPIRE 命令那样,以秒为单位。他的时间复杂度也是 O(1)
3.2.4.3、返回值
设置成功,返回1 key 不存在或设置失败,返回0
3.2.5、KEYS指令
3.2.5.1、语法
KEYS pattern
他的pattern是一种通配符,可以进行匹配:
- KEYS * :匹配数据库中所有key 。
- KEYS h?llo:匹配hello ,hallo 和hxllo 等。
- KEYS h*llo:匹配hllo 和heeeeello 等。
- KEYS h[ae]llo:匹配hello 和hallo ,但不匹配hillo 。特殊符号用 "\" 隔开。
3.2.5.2、作用
查找所有符合给定模式pattern 的key 。
3.2.5.3、返回值
符合给定模式的key列表。
3.2.6、MOVE指令
3.2.6.1、语法
MOVE key db
3.2.6.2、作用
将当前数据库的key 移动到给定的数据库db 当中。
3.2.6.3、返回值
移动成功返回1 ,失败则返回0
3.2.7、TTL指令
3.2.7.1、语法
TTL key
3.2.7.2、作用
以秒为单位,返回给定key 的剩余生存时间(TTL, time to live)。
3.2.7.3、返回值
- 当key 不存在时,返回-2 。
- 当key 存在但没有设置剩余生存时间时,返回-1 。
- 否则,以秒为单位,返回key 的剩余生存时间。
- 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
3.2.8、PTTL指令
3.2.8.1、语法
PTTL key
3.2.8.2、作用
这个命令类似于TTL 命令,但它以毫秒为单位返回key 的剩余生存时间,而不是像TTL 命令那样,以秒为单位。
3.2.8.3、返回值
- 当key 不存在时,返回-2 。当key 存在但没有设置剩余生存时间时,返回-1 。
- 否则,以毫秒为单位,返回key 的剩余生存时间。
- 在Redis 2.8 以前,当key 不存在,或者key 没有设置剩余生存时间时,命令都返回-1 。
3.2.9、RANDOMKEY指令
3.2.9.1、语法
RANDOMKEY
3.2.9.2、作用
从当前数据库中随机返回(不删除) 一个key 。
3.2.9.3、返回值
当数据库不为空时,返回一个key 。当数据库为空时,返回nil 。
3.2.10、RENAME指令
3.2.10.1、语法
RENAME key newkey
3.2.10.2、作用
将key 改名为newkey 。当key 和newkey 相同,或者key 不存在时,返回一个错误。当newkey 已经存在时,RENAME 命令将覆盖旧值。
3.2.10.3、返回值
改名成功时提示OK ,失败时候返回一个错误。
3.2.11、TYPE指令
3.2.11.1、语法
TYPE key
3.2.11.2、作用
返回key 所储存的值的类型。
3.2.11.3、返回值
- none (key 不存在)
- string (字符串)
- list (列表)
- set (集合)
- zset (有序集)
- hash (哈希表)
四、Redis中的数据类型
4.1、String类型
4.1.1、内存模型
4.1.2、常用操作命令
4.2、List类型
Redis中的List类型相当于java中list 集合,他的特点是元素有序且可以重复
4.2.1、内存模型
4.2.2、常用操作指令
4.3、Set类型
4.3.1、内存模型
4.3.2、常用命令
4.4、ZSet类型
它是一个可排序的set集合 且不可重复 ,又称作sortSet 。
4.4.1、内存模型
4.4.2、常用命令
4.5、Hash类型
value中放一个map结构,存在key和value,key是无序的
4.5.1、内存模型
4.5.2、常用命令
作者:XiaoLin_Java
原文链接:https://juejin.cn/post/6994662003591626765
相关推荐
- 甲骨文签署多项大型云协议,其一未来可贡献超300亿美元年收入
-
IT之家7月1日消息,根据甲骨文Oracle当地时间6月30日向美国证券交易委员会(SEC)递交的FORM8-K文件,该企业在始于2025年6月1日的202...
- 甲骨文获TEMU巨额合同,后者大部分基础设施将迁移至Oracle云
-
IT之家6月23日消息,Oracle甲骨文创始人、董事长兼首席技术官LarryEllison(拉里埃里森)在本月早些时候的2025财年第四财季和全财年财报电话会议上表示,Oracle...
- Spring Boot 自定义数据源设置,这些坑你踩过吗?
-
你在使用SpringBoot进行后端开发的过程中,是不是也遇到过这样的问题:项目上线后,数据库连接总是不稳定,偶尔还会出现数据读取缓慢的情况,严重影响了用户体验。经过排查,发现很大一部分原因竟然...
- 一个开箱即用的代码生成器(一个开箱即用的代码生成器是什么)
-
今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...
- 低代码建模平台-数据挖掘平台(低代码平台的实现方式)
-
现在来看一下数据连接。·这里是管理数据连接的空间,点击这里可以新增一个数据连接。·输入连接名称,然后输入url,是通过gdbc的方式去连接的数据库,目前是支持mysql、oracle以及国产数据库达梦...
- navicat 17.2.7连接oracle数据库提示加载oracle库失败
-
系统:macOS15.5navicat版本:navicatpremiumlite17.2.7连接oracle测试报错:加载oracle库失败【解决办法】:放达里面找到程序,显示简介里面勾选“使...
- 开源“Windows”ReactOS更新:支持全屏应用
-
IT之家6月17日消息,ReactOS团队昨日(6月16日)在X平台发布系列推文,公布了该系统的最新进展,包括升级Explorer组件,支持全屏应用,从Wine项目引入了...
- SSL 推出采用全模拟内置混音技术的模拟调音台Oracle
-
英国调音台传奇品牌SolidStateLogic宣布推出Oracle——一款采用全模拟内置混音技术的调音台,在紧凑的AWS尺寸机箱内集成了大型调音台的功能。该调音台提供24输入和...
- 47道网络工程师常见面试题,看看有没有你不会的!
-
你们好,我的网工朋友。网络工程师面试的时候,都会被问到什么?这个问题其实很泛,一般来说,你肯定要先看明白岗位需求写的是什么。基本上都是围绕公司需要的业务去问的。但不可否认的是,那些最基础的概念,多少也...
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
-
e公司讯,从汉得信息获悉,近日,微软官方宣布InternetExplorer桌面应用程序将于2022年6月15日正式停用。目前大部分客户都是使用IE浏览器打开EBS的Form界面,IE停用后,只能使...
- 36.9K star ! 推荐一个酷炫低代码开发平台!功能太强!
-
前言最近在逛github,看看能不能搜罗到一些对自己有帮助的开源软件。不经意间看到一个高star的java开源项目:jeecg-boot。进入在线演示版一看,感叹实在是太牛了!此开源项目不管是给来学习...
- Linux新手入门系列:Linux下jdk安装配置
-
本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...
- 手把手教你在嵌入式设备中使用SQLite3
-
摘要:数据库是用来存储和管理数据的专用软件,使得管理数据更加安全,方便和高效。数据库对数据的管理的基本单位是表(table),在嵌入式linux中有时候它也需要用到数据库,听起来好难,其实就是几个函数...
- JAVA语言基础(java语言基础知识)
-
一、计算机的基本概念什么是计算机?计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行、自动高速处理海量数据的现代化智能电子设备。由硬件和软件组成、没有安装过任何软件的计算机称...
- 再见 Navicat!一款开源的 Web 数据库管理工具!
-
大家好,我是Java陈序员。在日常的开发工作中,常常需要与各种数据库打交道。而为了提高工作效率,常常会使用一些可视化工具进行操作数据库。今天,给大家介绍一款开源的数据库管理工具,无需下载安装软件,基...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 甲骨文签署多项大型云协议,其一未来可贡献超300亿美元年收入
- 甲骨文获TEMU巨额合同,后者大部分基础设施将迁移至Oracle云
- Spring Boot 自定义数据源设置,这些坑你踩过吗?
- 一个开箱即用的代码生成器(一个开箱即用的代码生成器是什么)
- 低代码建模平台-数据挖掘平台(低代码平台的实现方式)
- navicat 17.2.7连接oracle数据库提示加载oracle库失败
- 开源“Windows”ReactOS更新:支持全屏应用
- SSL 推出采用全模拟内置混音技术的模拟调音台Oracle
- 47道网络工程师常见面试题,看看有没有你不会的!
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)