Redis基础入门
文章目录
- 前言
- 一、redis是什么?
- 二、安装步骤
- 1.下载安装包
- 2.安装
- 三、Redis的数据类型
- ==redis是一种高级的key-value的存储系统,其中的key是字符串类型,尽可能满足如下几点==:
- 字符串(String)
- 列表(List)
- 集合(Set,不允许出现重复的元素)
- 有序集合(sorted set)
- 哈希(Hash)
- 通用操作
- 总结
前言
接上篇linux搭建服务器部署项目,本次介绍使用linux安装redis步骤
一、redis是什么?
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数据应用难题。NoSQL有如下优点:易扩展,NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。无形之间也在架构的层面上带来了可扩展的能力。大数据量,高性能,NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
使用场景:
做缓存,提高数据读取效率。降低服务器压力,适用于并发量较大的业务场景。
二、安装步骤
官网:https://redis.io
下载:http://download.redis.io/releases
中文网:https://www.redis.net.cn/
1.下载安装包
我们需要去下边的地址下载安装压缩包
http://download.redis.io/releases/redis-5.0.5.tar.gz
2.安装
- 把下载好的redis-6.2.6.tar.gz安装包拷贝到当前虚拟机root目录下,解压到/usr/local下
[root@localhost ~]# tar -zxvf redis-6.2.6.tar.gz -C /usr/local
- 编译的c环境,注:安装时如果显示yum正在运行,需要先将yum进程kill后再执行该命令
[root@localhost ~]# yum install gcc-c++
- 进入redis-6.2.6目录 使用make命令编译redis(若报错,先make distclean,再make)
[root@localhost redis-6.2.6]# make
- 使用make PREFIX=/usr/local/redis-6.2.6 install命令安装(安装后会出现bin目录)
[root@localhost redis-6.2.6]# make PREFIX=/usr/local/redis-6.2.6 install
- 启动redis服务端(前台启动)
[root@localhost redis-6.2.6]# cd bin
[root@localhost bin]# ./redis-server
出现如下图的情形

启动后看到如上欢迎页面,但此窗口不能关闭,窗口关闭就认为redis也关闭了,所以我们需要在后台启动,然后再启动客户端进行连接,所以首先Ctrl+C退出。
解决:可以通过修改配置文件配置redis的后台启动(即服务器启动了但不会创建控制台窗口)
- 切换到redis-6.2.6目录下,把当前目录下的redis.conf文件拷贝到bin目录下
[root@localhost bin]# cd ../
[root@localhost redis-6.2.6]# cp redis.conf bin/redis.conf
- 切换到bin目录下,修改redis.conf文件
[root@localhost redis-6.2.6]# cd bin
[root@localhost bin]# vim redis.conf
- 将redis.conf文件中的daemonize的值从no修改成yes表示后台启动

- 启动redis服务端(后台启动)
[root@localhost bin]# ./redis-server redis.conf
- 查看是否启动成功
[root@localhost bin]# ps -ef | grep redis
- 启动客户端
[root@localhost bin]# ./redis-cli
- 存取数据进行测试
127.0.0.1:6379> set name jack
OK
127.0.0.1:6379> get name
"jack"
至此安装完成
三、Redis的数据类型
常用的5种数据结构:
- key-string:一个key对应一个值。
- key-hash:一个key对应一个Map。
- key-list:一个key对应一个列表。
- key-set:一个key对应一个集合。
- key-zset:一个key对应一个有序的集合。
另外三种数据结构:
- HyperLogLog:计算近似值的。
- GEO:地理位置。
- BIT:一般存储的也是一个字符串,存储的是一个byte[]。
redis是一种高级的key-value的存储系统,其中的key是字符串类型,尽可能满足如下几点:
1.key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找效率
2.key不要太短,如果太短会降低key的可读性
3.在项目中,key最好有一个统一的命名规范(根据企业的需求)
value最常用的五种数据类型:
-
字符串(String):最常用的,一般用于存储一个值
-
列表(List):使用list结构实现栈和队列结构
-
集合(Set) :交集,差集和并集的操作
-
有序集合(sorted set) :排行榜,积分存储等操作
-
哈希(Hash):存储一个对象数据的

字符串(String)
set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作,总是返回"OK"
get key:获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value,如果该key不存在,返回null
setex key seconds value:设置key以及对应的value,还可以设置过期时间,ttl key查询剩余时间
setnx key value:当key不存在时,设置对应的value,当key存在时,不做任何操作
incr key:将指定的key的value原子性的递增1.如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。
decr key:将指定的key的value原子性的递减1.如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。
incrby key increment:将指定的key的value原子性增加increment,如果该key不存在,器初始值为0,在incrby之后,该值为increment。如果该值不能转成整型,如hello则失败并返回错误信息。
decrby key decrement:将指定的key的value原子性减少decrement,如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能转成整型,如hello则失败并返回错误信息。
使用场景如下:
1.简单的缓存存储(最常用)
2.消息的失效性(过期时间的设置)
3.分布式锁的实现(redisson)
列表(List)
lpush key value1 value2…:在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。
rpush key value1 value2…:在该list的尾部添加元素。
lrange key start end:获取链表中从start到end的元素的值,start、end可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推….

lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。
rpop key:从尾部弹出元素。

llen key:返回指定的key关联的链表中的元素的数量。
使用场景如下:
消息流的场景:
1.用户的id作为key,发送的消息作为value,例如:朋友圈发布,微博发布,公众号发布…
集合(Set,不允许出现重复的元素)
sadd key value1 value2…:向set中添加数据,如果该key的值已有则不会重复添加。
smembers key:获取set中所有的成员。
scard key:获取set中成员的数量。

sismember key member:判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在。
srem key member1 member2… :删除set中指定的成员。

srandmember key:随机返回set中的一个成员。

spop key:随机返回set中的一个成员并从set中移除。
sdiff key1 key2:返回key1与key2中相差的成员,而且与key的顺序有关,即返回差集。

sdiffstore destination key1 key2:将key1、key2相差的成员存储在destination上。

sinter key[key1,key2…]:返回交集。
sinterstore destination key1 key2:将返回的交集存储在destination上。

sunion key1 key2:返回并集。

sunionstore destination key1 key2:将返回的并集存储在destination上

有序集合(sorted set)
zadd key score member score2 member2 … :将所有成员以及该成员的分数存放到sorted-set中。

zcard key:获取集合中的成员数量。

zcount key min max:获取分数在[min,max]之间的成员。

zincrby key increment member:设置指定成员的增加的分数。
zrangebyscore key min max withscores:返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]:显示分数;[limit offset count]:offset,表明从脚标为offset的元素开始并返回count个成员。

zrevrangebyscore key min max withscores:上面类似(score需从大到小),从高到底排序
使用场景如下:
排行榜实现
1.对播放的视频,分数自增1
2.展示排行榜前十的视频
实现:
1.zincrby videos 1 video1id
2.zrevrangebyscore videos 100 0 withscores limit 0 10 (zrevrangebyscore从大到小排序)
哈希(Hash)
hset key field value:为指定的key设定field/value对(键值对)。
hget key field:返回指定的key中的field的值。
hgetall key:获取key中的所有filed-vaule。
hlen key:获取key所包含的field的数量。
hincrby key field increment:设置key中filed的值增加increment
hdel key field [field …]:删除key中的属性
使用场景如下:
购物车场景:
1.用户的id作为key
2.商品的id作为field(属性)
3.商品的数量作为value(属性值)
购物车操作:
1.用户添加购物车:hset cart:1001 20001 1 (id为1001的用户添加了一个id为20001的商品,数量为1个)
2.增加对应商品数量:hincrby cart:1001 20001 1
3.查询商品总数:hlen cart:1001
4.删除该用户的某个商品:hdel cart:1001 20001
5.查询该用户购物车信息:hgetall cart:1001
通用操作
keys patten:获取所有与patten匹配的key,*表示任意字符,?表示一个字符。
del key1 key2…:删除指定的key。
exists key:判断该key是否存在,1表示存在,0表示不存在。
expire key second:为当前key设置过期时间(单位:秒)。
ttl key:查看当前key剩余过期时间。
flushall: 删除所有key(慎用)
flushdb: 删除所有key(慎用)
总结
本篇主要介绍了Redis的安装和数据结构以及使用场景的介绍
相关文章:
Redis基础入门
文章目录前言一、redis是什么?二、安装步骤1.下载安装包2.安装三、Redis的数据类型redis是一种高级的key-value的存储系统,其中的key是字符串类型,尽可能满足如下几点:字符串(String)列表(List)集合(Set,不允许出现重复…...
【微服务】Feign实现远程调用和负载均衡
目录 1.什么是Feign 2 订单微服务集成Feign 2.1.引入依赖 2.2添加注解 2.3编写Feign的客户端 2.4修改OrderServiceImpl.java的远程调用方法 2.5重启订单服务,并验证 总结 1.什么是Feign Feign是Spring Cloud提供的⼀个声明式的伪Http客户端, 它…...
Windows使用QEMU搭建arm64 ubuntu 环境
1. 下载 QEMU: https://qemu.weilnetz.de/w64/ QEMU UEFI固件文件: https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd arm64 Ubuntu镜像: http://cdimage.ubuntu.com/releases/20.04.3/rel…...
NodeJS安装
一、简介Node.js是一个让JavaScript运行在服务端的开发平台,Node.js不是一种独立的语言,简单的说 Node.js 就是运行在服务端的 JavaScript。npm其实是Node.js的包管理工具(package manager),类似与 maven。二、安装步骤…...
Gin 优雅打印请求与回包内容
文章目录1.Gin 的 Middleware2.使用 Middleware 打印请求与回包内容3.多次读取请求 Body 的问题4.多次读取响应 Body 的问题5.小结参考文献在开发 Web 应用程序时,难免不会遇到功能或性能等问题。为了快速定位问题,需要打印请求和响应的内容。本文将介绍…...
关于k8s中ETCD集群备份灾难恢复的一些笔记
写在前面 集群电源不稳定,或者节点动不动就 宕机,一定要做好备份,ETCD 的快照文件很容易受影响损坏。重置了很多次集群,才认识到备份的重要博文内容涉及 etcd 运维基础知识了解静态 Pod 方式 etcd 集群灾备与恢复 Demo定时备份的任务编写二进…...
【设计模式之美 设计原则与思想:设计原则】19 | 理论五:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
关于 SOLID 原则,我们已经学过单一职责、开闭、里式替换、接口隔离这四个原则。今天,我们再来学习最后一个原则:依赖反转原则。在前面几节课中,我们讲到,单一职责原则和开闭原则的原理比较简单,但是&#x…...
2023年全国最新高校辅导员精选真题及答案13
百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 一、单选题 131.下列不属于我国国土空间具有的特点的是() A.水资…...
【XXL-JOB】XXL-JOB定时处理视频转码
【XXL-JOB】XXL-JOB定时处理视频转码 文章目录【XXL-JOB】XXL-JOB定时处理视频转码1. 准备工作1.1 高级配置1.2 分片广播2. 需求分析2.1 作业分片方案2.2 保证任务不重复执行2.2.1 保证幂等性3. 视频处理业务流程3.1 添加待处理任务3.2 查询待处理任务3.3 更新任务状态3.4 工具…...
optuna用于pytorch的轻量级调参场景和grid search的自定义设计
文章目录0. 背景:why optuna0.1 插播一个简单的grid search0.2 参考1. Optuna1.1 a basic demo与部分参数释义1.2 random的问题1.3 Objective方法类2. Optuna与grid search4. optuna的剪枝prune5. optuna与可视化6. 未完待续0. 背景:why optuna 小模型参…...
语法篇--汇编语言先导浅尝
一、相关概念 1.机器语言 机器语言(Machine Language)是一种计算机程序语言,由二进制代码(0和1)组成,可被计算机直接执行。机器语言是计算机硬件能够理解和执行的唯一语言。 机器语言通常由一系列的指令组…...
【ID:17】【20分】A. DS顺序表--类实现
时间限制1秒内存限制128兆字节题目描述用C语言和类实现顺序表属性包括:数组、实际长度、最大长度(设定为1000)操作包括:创建、插入、删除、查找类定义参考输入第1行先输入n表示有n个数据,即n是实际长度;接着输入n个数据…...
【java web篇】Tomcat的基本使用
📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言Ὅ…...
MySQL实战解析底层---行锁功过:怎么减少行锁对性能的影响
目录 前言 从两阶段锁说起 死锁和死锁检测 前言 MySQL 的行锁是在引擎层由各个引擎自己实现的但并不是所有的引擎都支持行锁,比如MyISAM 引擎就不支持行锁不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有…...
初识STM32单片机
目录 初识STM32单片机 什么是单片机? STM系列单片机命名规则 STM32F103C8T6单片机简介 标准库与HAL库区别 通用输入输出端口GPIO 什么是GPIO? 定义 命名规则 内部框架图 推挽输出与开漏输出 如何点亮一颗LED灯 编程实现点灯 按键点亮LED灯…...
数据结构与算法系列之单链表
💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 这里写目录标题test.hSList.h注意事项一级指针与二级指针的使用assert的使用空…...
MySQL基础
本单元目标 一、为什么要学习数据库 二、数据库的相关概念 DBMS、DB、SQL 三、数据库存储数据的特点 四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★ MySQL服务的登录和退出 ★ MySQL的常见命令和语法规范 五、…...
面试热点题:环形链表及环形链表寻找环入口结点问题
环形链表 问题: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接…...
【算法】DFS与BFS
作者:指针不指南吗 专栏:算法篇 🐾题目的模拟很重要!!🐾 文章目录1.区别2.DFS2.1 排列数字2.2 n-皇后问题3.BFS3.1走迷宫1.区别 搜索类型数据结构空间用途过程DFSstackO( n )不能用于最短路搜索到最深处&a…...
湖州银行冲刺A股上市:计划募资约24亿元,资产质量水平较高
3月4日,湖州银行股份有限公司(下称“湖州银行”)递交招股书,准备在上海证券交易所主板上市。本次冲刺上市,湖州银行计划募资23.98亿元,将在扣除发行费用后全部用于补充该行资本金。 湖州银行在招股书中表示…...
从电动车痛点出发:双三相永磁电机如何靠‘弱磁’跑得更远更快?(深入对比凸极与隐极设计)
双三相永磁电机弱磁控制技术:破解电动车高速性能瓶颈的工程实践 电动车的高速巡航与急加速能力一直是用户关注的焦点,而永磁同步电机(PMSM)的弱磁控制技术正是解锁这一性能的关键。不同于传统三相电机,双三相永磁同步…...
LabelImg图像标注工具:3分钟掌握高效目标检测数据标注技巧
LabelImg图像标注工具:3分钟掌握高效目标检测数据标注技巧 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check ou…...
情感漏洞经纪:倒卖AI崩溃瞬间年入百万
新兴暴利职业的崛起在人工智能技术高速发展的今天,一种名为“情感漏洞经纪”的灰色产业悄然兴起,从业者通过倒卖AI系统崩溃瞬间的数据年入百万。这些经纪人专门捕捉AI模型在情感交互中的故障时刻——如系统宕机前的“遗言”、未完成的情感回应或异常输出…...
实战调试:段页式内存管理中的首次页故障剖析
1. 段页式内存管理基础概念 段页式内存管理是现代操作系统的核心机制之一,它巧妙结合了分段和分页两种技术的优势。简单来说,就像我们整理衣柜时既按季节(分段)又用收纳盒(分页)来管理衣物。CPU看到的线性地…...
深入解析振动传感器:从原理到应用的全面指南
1. 振动传感器入门:从"感觉"到"测量"的跨越 你有没有想过,为什么手机横屏时画面会自动旋转?为什么智能手环能记录你的步数?这些看似简单的功能背后,都离不开一个关键元件——振动传感器。作为工业…...
OpenClaw任务监控方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧
OpenClaw任务监控方案:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF长链条任务管理技巧 1. 为什么需要长链条任务监控 去年冬天,当我第一次用OpenClaw执行一个包含12个步骤的自动化流程时,系统在凌晨3点卡在了第7步——模型因为To…...
【AI】-----向量数据库核心应用场景
向量数据库核心应用场景 1. 大模型 / RAG 知识库(最主流) 企业内部文档、合同、产品手册语义检索解决大模型幻觉、知识过时问题客服机器人、智能问答、私域知识库 2. 推荐系统 电商:相似商品、猜你喜欢短视频/内容:基于用户兴趣的…...
本地部署开源推送通知系统 ntfy 并实现外部访问
ntfy 是一款简单、轻量级且功能强大的开源推送通知系统,它的核心目标是让用户或开发者能够轻松地从任何设备、任何地方向自己的手机或桌面发送通知。本文将详细介绍如何在 Linux 系统局域网内部署 ntfy 并结合路由侠实现外网访问局域网内部署的 ntfy 。 第一步&…...
大麦抢票自动化终极指南:5分钟快速上手教程
大麦抢票自动化终极指南:5分钟快速上手教程 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 您是否曾因热门演唱会门票秒光而遗憾&#x…...
PP-DocLayoutV3效果惊艳:26类标签全覆盖+多边形框可视化热力图展示
PP-DocLayoutV3效果惊艳:26类标签全覆盖多边形框可视化热力图展示 1. 文档布局分析的新突破 在日常工作中,我们经常需要处理各种文档图像——扫描的合同、拍摄的表格、手写的笔记,甚至是倾斜拍摄的白板内容。传统的文档分析工具往往只能处理…...
