【Redis--01,Redis基础概念、基础指令、数据类型】

Redis精通系列——info 指令用法 本文已收录于专栏 ❤️《Redis精通系列》❤️ 上千人点赞收藏,全套Redis学习资料,大厂必备技能! 目录 1、简介 2、info/info all 3、info server 4、info clients 5、info memory 6、info persistence 7、AOF 8、loading 9、status 10、info replication 11、info CPU 12、info cluster 13、info keyspace 1、简介 Re.. 阅读详情


今天主要是学习Redis的第一步,掌握Redis的基础概念包含基础指令,其次,我们需要掌握其全部数据类型,感兴趣的可以关注,后续会分类更新全部java的白话文教学内容;

接下来我们带着下面三个问题来学习今天的内容:
1、它是什么?
2、为什么要用它?
3、如何使用?

一、Redis是什么?

Redis:Remote Dictionary Server,即远程字典服务
是完全开源免费,用C语言编写的,是一个基于内存运行、支持持久化、高性能的(Key/Value)分布式内存数据库,也是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器。
Redis与其他key-value缓存产品有以下三个优势:

  1. Redis支持数据持久化,可将内存中的数据持久化至磁盘中,重启的时候可以再次加载进行使用。
  2. Redis不仅仅支持简单的 key-value 类型数据,同时还提供list、set、zset、hash等数据结构的存储。
  3. Redis支持数据备份,即master-slave模式的数据备份。

(白话文: 说白了,Redis就是一种拥有存储数据的功能,比关系型数据库更加灵活、自由,通常情况用于进行缓存、分布式锁、计数器、消息队列等操作,而其中最主要的使用是:缓存,存储些临时的、频繁访问的数据,减少对后端数据库的访问,从而提高系统的响应速度和性能‌)

二、为什么要使用Redis?

1. 使用的企业和人多,如果没人使用,我们也就不会使用它

2. 支持内存存储和持久化

Redis支持异步将内存中的数据写到硬盘上,同时不影响服务的正常运行。因为Redis交换数据快,所以在服务器中常用来存储一些临时的、需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,极大提升响应速度;

三、如何使用Redis?

3.1、Redis常识与基础命令

默认16个数据库,类似数组下标从0开始,初始默认使用1号库(索引为0)

基础命令如下:

select *              切换数据库  
dbsize                查看当前库的key的数量  
set  key vale         数据库存储值
get key               获取值  
exists key            判断是否存在该key值,存在该key值则返回1,不存在返回0
keys *                查看数据库所有的key      
flushdb               清空当前数据库      
flushall              清空所有数据库
expire key xxx        设置key值xxx秒过期        
ttl key               查看该key值剩余多少秒过期
persist key           取消过期                        
type key              查看当前key的类型         
面试题分享:Redis为什么是单线程的?

我看很多人都是这样回答的:

因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis 的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就 顺理成章地采用单线程的策略了。

其实也没错,但是不够细,面试还是需要比较细致的回答面试官问题的,所以我总结如下:

1. 多线程线程切换是需要时间成本的
2. 单线程避免了并发访问线程安全问题(锁竞争)
3. 单线程天然地保证了操作的原子性(Redis很多指令都是需要原子性操作)

3.2、数据类型

3.2.1、5大基础数据类型

String、List、Hash、Set、Zset

接下来我们就一个个的过:

1、String类型

使用场景: 常规key-value缓存应用、 常规计数器功能:微博数,粉丝数、访问量等

我们在工作中,估计80%都在使用String类型,而且很多人估计使用redis只会使用String

基本指令:

set key value                设置值        
get key                      获取值        
del key                      删除key
strlen key                   获取该key值对应的value值的长度        
append  key "xxx"            在该key对应的value值追加上xxx
incr key                     该key对应的value自增1        
decr key                     该key对应的value自减1
incrby key xx                设置自增步长,该key对应的value增加xx   
decrby key xx                设置自减步长,该key对应的value减少xx
getrange key x1 x2:          获取x1-x2范围内的值,类似between..and的关系,从零到负一表示全部

注意: String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字

2、List类型

使用场景: 栈、队列,如:浏览器历史记录、撤销操作等需要后进先出(LIFO)等

基本指令:

所有的list命令都是用l开头的

lpush  集合名  value                将xx插入到集合头部        
rpush  集合名  value                将xx插入到集合尾部
lrange 集合名  x y               获取集合里x-y(x、y代表下标)的值(0 -1为获取集合中所有的值)
lpop  集合名                     移除该集合的左值         
rpop  集合名                     移除该集合的右值
lindex  集合名  x                获取该集合中下标为x的值        
llen  集合名                     获取集合的长度
lset 集合名 index xx             将集合下标为index的值更新为xx(不能添加)
linsert  集合名  before yy xx    在集合中的yy值前面插入一个xx值
linsert  集合名  after  yy xx    在集合中的yy值后插入一个xx值

注意: List数据结构左右都可以插入数据、获取数据

3、Hash类型

使用场景: 对象的缓存等

基本指令:

hset key field value	            设置值	
hget key field	                    获取值	
hdel key field [field …]	        删除field	
hlen key	                        计算field个数	
hgetall field [field …]	            获取所有的field-value	
hmget field [field …]	            批量获取field-value	
hexists key field	                判断field是否存在	
hkeys key	                        获取所有的field	
hvals key	                        获取所有的value	
hsetnx key field value	            设置field值,field不存在时成功	
hincrby key field n	                对应field-value+n	
hincrbyfloat key field n	        对应field-value+n(浮点数版)	
hstrlen key field	                计算value的字符串长度	

注意: List数据结构左右都可以插入数据、获取数据

4、Set类型

使用场景: 文章点赞、共同关注等

基本指令:

sadd key element [element … ]	        向set添加一个获多个元素	
smembers key	                        获取集合的所有元素	
sismember key element	                判断一个元素是否在set中
scard key	                            求集合中元素个数	
spop key [count]	                    随机删除并获取元素	
srandmember key [count]	                随机获取元素	
smove sourse destination member	        将元素从一个集合中移到另一个集合	
srem key member [member …]	            移除指定元素	
sinter key1 [key2 … ]	                求交集	
sinterstore destination key1 [key2 …]	求交集并放入指定集合中	
sunion key1 [key2 … ]	                求并集
sunionstore destination key1 [key2 …]	求并集并放入指定集合中	
sdiff  key1 [key2 … ]	                求差集	
sdffstore destination key1 [key2 …]	    求差集并放入指定集合中	

5、ZSet类型

使用场景: 排行榜、电话、姓名排序等

基本指令:

zadd 集合名   scroe值 value        向集合中增加value值,排序的时候通过score的值进行排序
zrange 集合名 0 -1                 查询集合中所有的值,默认按照score值的升序排列
zrangebyscore 集合名  -inf +inf    按score值升序排列,可以用具体值替换+-inf,例如[-inf,2000]
zrevrangebyscore 集合名 +inf -inf  按照score的值降序排列
zrem  集合名 value                 移除该集合中的指定元素        
zcard  集合名                      获取有序集合中的元素的个数
3.2.2、3种特殊数据类型
1、geospatial类型

使用场景: 朋友定位、附近的人、打车距离、两点之间的距离、以某一个点为中心,距离中心多少的人或者事物等

基本指令:

geoadd  key  经度1 纬度1  城市1             在key中存储城市的位置信息
如:geoadd china:city 116.40 39.90 beijin 
geopos  key  城市1                         取出key中指定城市的的经度和纬度
geodist  key 城市1  城市2  m/km            计算两个城市之间的距离,单位为m/km
georadius key 经度 纬度 500km              key下所有距离该位置半径为500km的范围内的城市
georadiusbymember key  城市1 1000km       找出key下距离城市1000km范围内的城市
2、hyperloglog类型

HyperLogLog是一种概率数据结构,用于基数估计,即估计一个集合中不同元素的数量。它非常适合用来统计独立元素的数量,比如在网页访问量统计、独立用户计数等场景中。HyperLogLog的优势在于其内存效率极高,即使在数据量极大的情况下,也能保持极低的内存(占用内存固定:12kb)占用,且错误率控制在0.81%。
所谓的 基数: 集合中不重复的元素的个数 。

使用场景: 网站的访问量、广告点击率分析、游戏玩家分析、社交媒体分析等

基本指令:

[PFADD key element [element ...]              添加指定元素到 HyperLogLog 中。
[PFCOUNT key [key ...]                        返回给定 HyperLogLog 的基数估算值。
[PFMERGE destkey sourcekey [sourcekey ...]    将多个 HyperLogLog 合并为一个 HyperLogLog,并集计算
3、bitmaps类型

位图(Bitmaps)是一种非常有用的数据结构,它允许存储大量的二进制数据(即只有0和1的位)。Redis的位图操作非常高效,特别是在处理大量布尔值或者计数问题时非常有用。

使用场景: 用户活跃性跟踪、统计独立访客、用户登录状态记录、计数器(例如访问次数)等

基本指令:

zadd 集合名   scroe值 value        向集合中增加value值,排序的时候通过score的值进行排序
zrange 集合名 0 -1                 查询集合中所有的值,默认按照score值的升序排列
zrangebyscore 集合名  -inf +inf    按score值升序排列,可以用具体值替换+-inf,例如[-inf,2000]
zrevrangebyscore 集合名 +inf -inf  按照score的值降序排列
zrem  集合名 value                 移除该集合中的指定元素        
zcard  集合名                      获取有序集合中的元素的个数

本篇完结(下一篇,Redis高频面试问题总结,有需要的朋友可以关注我,后续持续分享Java更多白话文讲解)

Navicat Premium 12 永久激活保姆级教程(附最新补丁下载) 本文详细介绍了Navicat Premium 12的高效使用方法,从安装配置到高级功能应用,帮助用户充分发挥这款数据库管理工具的全部潜力。内容包括数据库连接管理、数据查询与编辑、数据同步与结构对比等核心功能,以及性能优化和最佳实践建议,提升数据库管理效率。 阅读详情

相关推荐

GPS从入门到放弃(十七) --- 对流层延时

GPS从入门到放弃(十七) — 对流层延时 对流层概念 对流层(Troposphere)地球大气层靠近地面的一层。它同时是地球大气层里密度最高的一层,它蕴含了整个大气层约75%的质量,以及几乎所有的水蒸气及气溶胶。 对流层的下界与地面相接,上界高度随地理纬度和季节而变化,在低纬度地区平均高度为1718公里,在中纬度地区平均为1012公里,在高维度地区平均为8~9公里,并且夏季高于冬季。 卫星导航...

tyst08的专栏 1万+

Redis 入门 - 五大基础类型及其指令学习

学习Redis基础类型:字符串、集合、有序集合、列表、哈希,每种类型有各自的特点和常用指令。掌握这些基础是熟练使用Redis的关键。更多指令需自行尝试。

IT规划师 1012

新手别怕!用‘东北天’和‘右前上’坐标系,5分钟搞懂惯性导航姿态矩阵(含Python验证代码)

本文通过‘东北天(ENU)’和‘右前上(RFU)’坐标系,详细解析惯性导航中的姿态矩阵概念。包含Python代码验证,帮助新手快速理解坐标变换、欧拉角及旋转矩阵的构建与应用,特别强调有限转动不可交换性与无限转动次序无关的区别。

weixin_29062255的博客 331

Redis(01)——常用指令

Redis常用指令

peng_gx的博客 1984

Unreal 5 MetaHuman插件全流程:从安装到角色动画生成

本文详细介绍了Unreal 5中MetaHuman插件的全流程使用指南,从安装配置到角色动画生成。通过Quixel Bridge下载预设角色,利用面部捕捉技术赋予数字人模型生命力,并提供材质编辑、性能优化等进阶技巧,帮助用户快速创建照片级真实的虚拟角色。

weixin_29009081的博客 829

【汽车ECU电控数据管理篇】A2L文件在ECU标定中的关键作用与实战解析

本文深入解析A2L文件在汽车ECU标定中的关键作用,详细介绍了其作为'数据字典'的核心功能与实战应用。通过剖析A2L文件的结构、关键标签及常见问题,帮助工程师高效管理电控数据,提升ECU标定效率与准确性。文章特别强调了ASAP2标准下的A2L文件在汽车电控系统中的重要性。

a3b4c5的博客 786

redis基础指令及数据类型

全局指令 redis有5种数据类型,它们是键值对中的值,对于键来说有些通用的命令。这里称之为全局指令。 set 创建一个键值对 127.0.0.1:6379> set a 1 mset 创建多个键值对 127.0.0.1:6379> mset a 1 b 2 c 3 OK get 通过键来获得值 127.0.0.1:6379> get a mget 获取多个键值 127.0.0.1:6379> mget a b c 1) "1" 2) "2" 3) "3" dbsize 统计

看清所以看轻 237

STM32F103C8T6+I2C+DMA读取陀螺仪模块JY901S(硬件I2C

说明:1.本实验代码适用移植一切stm32f1系列;2.本实验使用的是外设资源硬件I2C2;3.本实验运用的是DMA单次模式,如果需要DMA的循环模式,请移步我的另一篇文章;4.本文章不提供陀螺仪校准教学,并是在没有校准陀螺仪情况下读取数据;5.本文章是作者的学习记录及心得,如有不足,欢迎指正。 总结:亲测stm32f103c8t6最小系统板通过片上外设资源I2C配合DMA读去陀螺仪模块jy901s偏航角有效。

anquanyuanqqadsy的博客 6170

hget和get redis_redis基础指令及数据类型

全局指令redis有5种数据类型,它们是键值对中的值,对于键来说有些通用的命令。这里称之为全局指令。set 创建一个键值对127.0.0.1:6379> set a 1mset 创建多个键值对127.0.0.1:6379> mset a 1 b 2 c 3OKget 通过键来获得值127.0.0.1:6379> get amget 获取多个键值127.0.0.1:6379>...

weixin_39610229的博客 897

工控安全政策系列导读:国际标准IEC 62443标准系列

IEC 62443由ANSI/ISA提出,被ISO/IEC采纳,所以该标准会以不同的名字出现,包括:ANSI/ISA-99,ISA-99,ISA 62443,ISO/IEC 62443,ISO 62443,IEC 62443。其中IEC 62443-2-1已等同采纳为国标,于2016年10月发布,标准编号为GB/T 33007。 IEC 62443是在国...

weixin_34132768的博客 2621

飞秒激光加工石英玻璃的COMSOL多物理场仿真研究

多物理场仿真是现代工程研发的重要工具,通过耦合电磁、热传导和流体力学等物理场,可以准确预测复杂工况下的材料行为。COMSOL Multiphysics作为主流仿真平台,其双温模型能精确描述飞秒激光加工中的电子-声子耦合过程。这种仿真技术可显著降低实验成本,在微纳加工领域尤为关键。针对石英玻璃这类光学材料,仿真能有效优化激光参数,实现亚微米级精度的冷加工。研究显示,结合移动网格技术和自定义材料状态函数,可以准确预测烧蚀形貌与热影响区分布,为光学器件和微流控芯片制造提供可靠工艺指导。

weixin_29290863的博客 240

Redis中的基本指令

本文对Redis的结构进行了强调,对Redis中的一些基本指令进行了讲解,其中对一些指令进行了补充,并简单说明了一下过期策略的实现。

Smarmot的博客 787

从0到1用OpenClaw打造酒店收益管理系统:数据整合→AI策略迭代全链路落地实战

本文基于三亚某连锁海景酒店真实项目落地经验编写,系统上线3个月,酒店平均入住率从62%提升至80%,RevPAR(平均可售房收入)提升26%,淡季空置率降低46%,完全覆盖中小酒店全场景收益管理需求。本文配套OpenClaw全量Skill代码、工作流配置文件,可直接复用落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 491

图解Redis 01 | 初识Redis

Redis 是一种基于内存的数据库,所有的数据读写操作都在内存中完成,因此读写速度非常快。它被广泛应用于缓存、消息队列、分布式锁等场景。Redis 提供了多种数据类型来支持不同的业务需求,如 String、Hash、List、Set、Zset、Bitmaps、HyperLogLog、GEO、Stream 等。Redis 对这些数据类型的操作都是原子的——因为Redis是单线程架构,一条命令的执行是由单个线程完成,不会出现并发竞争的问题。

大厂小码农的博客 1875

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Redis 【第一篇】五种数据类型的常用命令以及应用场景模拟

一、Redis基础知识介绍 1、什么是NoSql    NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充,是为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案。 2、Nosql数据库分类   (1) 键值(Key-Value)存储数据 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对...

NanYII_的博客 4537

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【redis-01】redis基本数据类型和使用场景

redis基本数据类型和使用场景

zhenghuishengq的博客 1884

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

01Redis基础篇

Redis最快入门

qq_41781632的博客 2184

Redis7_01 基础篇 第一章 Redis的十大数据类型(下)

Redis7十大数据类型下篇 bitmap geo Hyperloglog stream bitfield

qq_33168558的博客 1057

01.Redis简介、Redis数据类型

下载好Redis,我们将其解压:1.启动Redis服务:也可以在cmd使用语句启动。2.双击redis-cli打开客户端窗口String基本操作:set:存储值get:获取值del:删除数据(可以删除多个)mset:一次存储多个值mget:一次获取多个值strlen:获取字符个数append:追加字符串(如果没有则新增)setnx:存入key,如果这个key存在则返回0(false),代表存入失败,如果不存在则返回1(true),代表存入成功​​​​​​​。

weixin_44725040的博客 799

Redis数据类型:Hashes、Geo操作指令

Redis数据类型:Hashes、Geo操作指令 Hashes常用操作指令 Redis Hashes是一个键值对的映射表,最对能存储2^32-1(约40亿)个键值对。 HSET HGET HSET:将键值对存储到哈希表中,如果哈希表不存在,新建一个然后在将键值对存储进去。 HGET: 根据Key值获取value。 127.0.0.1:6379> ZADD sortset 1 name (i...

MegaSlark的博客 678

redis01 - redis基础

redis01 - redis基础

qq_43350524的博客 1025

Redis01-基础-入门

Redis(Remote Dictionary Server,远程字典服务)是一个开源的、基于内存的高性能键 - 值存储数据库。它由 Salvatore Sanfilippo 编写,使用 ANSI C 语言开发。

李宥的博客 1495

redis五种基本数据类型和数据通用指令

用于学习后的自己总结,如有错漏恳请指教 五中基本数据类型 null string list hash set sort-set 设置变量 set lpush(头插法)\rpush(尾插法) hset sadd zadd 获取变量 get lpop\rpop hget smembers 获取长度 strlen llen hlen scard zcard 删除变量 del lrem hdel srem zrem 特殊操作 null incr/递增 lindex/获

weixin_43118891的博客 602

[2-02-01].第01节:Redis基础 - Redis概述

Redis基础 - Redis概述

F-T-er 1320
上一篇: 阿里云服务器安装RabbitMQ(亲测有效)
下一篇: 【Spring Boot + DeepSeek 实战来了!】
ZwProgrammer
博客等级 码龄7年 594粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值