当前位置: 首页 > news >正文

redis基本入门| 怎么安装redis?什么的是redis?怎么使用?

目录

一、Redis下载与安装

二、基本概念

1.什么是Redis?

2.Redis端口多少?

3.Redis是单线程还是多线程?

4.Redis为什么单线程还这么快?

三、Redis的基本操作

四、Redis的五个基本类型

1.Redis-key

2.字符串 string 

3.列表 list

4.集合 set

5.哈希

6.有序集合 zset


前言:

        本文只是对redis的入门学习,如需更为详细和系统的学习,请访问以下两个链接的参考资料:

        1.百度网盘分享链接:

                链接:https://pan.baidu.com/s/11k14fqNSj2N_YrUUXkEDIw?pwd=1j8i 
                提取码:1j8i

        2.参考资料网址:Redis 数据类型 | 菜鸟教程 (runoob.com)​​​​​​

一、Redis下载与安装

  1. 官网下载安装包:雷迪斯 (redis.io)
  2. 将安装包传到Linux系统
  3. 将安装包拷贝到 /opt
  4. 解压安装包
  5. 进入解压后的目录
  6. 执行make命令
  7. 执行make install命令
  8. 切换到/usr/local/bin目录下
  9. 拷贝Redis的配置文件(redis.conf)到当前目录下
  10. 修改配置文件
  11. 启动Redis的服务器 执行命令 ./redis-server redis.conf
  12. 启动Redis的客户端 执行命令 ./redis-cli -p 6379
  13. 测试是否连接上Redis的服务器 执行命令 ping

二、基本概念

1.什么是Redis?

        Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件 。 它支持多种类型的数据结构,如字符串(strings), 散列(hashes), 列表(lists), 集 合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间 (geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化 (persistence)-- RDB和AOF , 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高 可用性(high availability)

2.Redis端口多少?

        6379

3.Redis是单线程还是多线程?

        单线程。

        Redis是很快的,官方表示,Redis是基于内存操作的,CPU不是Redis的性能瓶颈,Redis的瓶颈就是 根据机器的内存和网络带宽。既然可以使用单线程来实现,就使用单线程了! Redis是C语言实现的,官方数据:读:110000/s 写: 80000/s,完全不比同样使用key-value的 Memcached差

4.Redis为什么单线程还这么快?

        误区1: 高性能的服务器一定是多线程的

        误区2: 多线程(CPU上下文切换)一定比单线程效率高

        核心: Redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,相比多线程,减少了CPU上下文切换的耗时。对于内存系统来说,没有上下文切换效率就是最高的,多次读写都是在一个CPU上的。

三、Redis的基本操作

        Redis默认有16个数据库,默认使用的是第0个数据库,可以通过select切换数据库。

        Redis的命令对大小写不敏感

  • select 切换数据库,格式: select index
  • 查看数据的大小, 格式: dbsize
  • 查看所有的key,格式: keys *
  • 清空当前数据库和清空所有的数据库:flushdb flushall

四、Redis的五个基本类型

1.Redis-key

#########################################################
# SET 设置key
# GET 查看key的值
# EXPIRE 设置key的过期时间
# TTL 查看key剩余的时间
# EXISTS 判断当前的key是否存在
# KEYS * 查看当前所有的key
# DEL key 删除当前的key
# TYPE 查看key存储的value的类型

2.字符串 string 

set get
  • 设置值和获取值: 格式: set key value get key
  • 判断key是否存在,格式: exists key
  • 追加字符串,如果key不存在,相当于set命令,格式: append key value
  • 获取字符串的长度,格式: strlen key
  • 对value进行自增1和自减1操作,格式: incr key decr key
  • 设置加减的步长,格式: incrby key num decrby key num
  • 获取给定范围的字符串值,格式: getrange key start stop
  • 从指定位置开始替换字符串的值,格式: setrange key offset value
  • 设置过期时间,查看剩余时间,格式: setex key seconds value ttl key
  • 如果key不存在则设置,负责失败,格式: setnx key value
  • 同时设置或者获取多个值,格式: mset key1 value1 key2 value2 ... mget key1 key2..
  • msetnx是一个原子操作,要么一起成功,要么一起失败
  • 用string存储对象时key值的设计

小结 ——String类似的使用场景:

  • value除了是字符串也可以是数字!
  • 计数器
  • 统计多单位的数量 对象缓存存储

3.列表 list

        在Redis中,我们可以把list完成栈、队列、阻塞队列 所有的list命令都是用l开头的

  • 从list的左边或者右边插入值,格式: lpush key value rpush key value lrange获取指定范围的值,格式: lrange key start stop
  • 从列表的左边或者右边移除值,格式: lpop key rpop key
  • 获取指定下标的值,格式: lindex key index
  • 获取列表中的元素个数,格式: llen key
  • 移除列表中的元素,格式: lrem key count value
  • 截取列表的值,格式: ltrim key start stop
  • 移除列表中最后一个元素,将它添加到另一个列表中,格式: rpoplpush key1 key2
  • 根据下标替换列表中的值,格式: lset key index value
  • 在列表中插入值,格式: linsert key before|after value new_value

小结

  • 他实际上是一个链表,before or after, left,right都可以插入值
  • 如果key不存在,创建新的链表
  • 如果key存在,新增内容
  • 如果移除了所有的值,空链表,也代表不存在
  • 在两遍插入或者改动值,效率最高!中间元素,相对来说效率会低一点
  • 队列: LPOP RPUSH
  • 栈: LPOP LPUSH

4.集合 set

  • set中的值是不能重复的
  • sadd 给set中添加值,格式: sadd key value1 value2 ... 
    • 示例,其中第二次命令可以看出,在key(name)后添加value才可以成功执行
  • 获取set中的所有值,格式: smembers key
  • 判断某个值是否在set中,格式: sismember key value
  • 获取set中元素的个数,格式: scard key
  • 删除set中的值,格式: srem key value1 value2....
  • 从set中获取随机值,格式: srandmember key count
    • 示例,假如一个抽奖机制,随机发送奖品
      • 在jiangpin(奖品)中随机抽取shubao(书包)、shuibei(水杯)、qianbi(铅笔)

  • 随机删除指定个数个元素,格式: spop key count
  • 将指定的元素从一个set中移动到另一个set中,格式: smove set1 set2 value
    • 示例,将users中的xiaoli移到到name中
  • 数字集合类:

    • 差集

      交集

      并集

  • 应用
    • 实现交集——抖音中,A用户将所有关注的人放在一个set集合中,将他的粉丝放在一个集合中 可以实现共同关注,共同爱好,二度好友(推荐好友)等
    • 实现差集
    •  实现并集,重复的只显示1遍

5.哈希

hash 可以将哈希看成是一个Map集合,key-value中的value是一个map集合

  • 设置或者获取一个hash的值,格式:设置: hset key field1 value1   获取: hget key field
  • 设置或者获取hash的值,格式:设置: hmset key field1 value1 field2 value2 ... 获取:hmget key field1 field2...
  • 获取hash中的所有值:getall
  • 删除指定field的hash键值对,格式: hdel key field
  • 12

6.有序集合 zset

  • 添加一个值,格式: zadd key scores value
  • 获取zset中一个范围的值,格式: zrange key start stop
  • 将zset中的值按照score从小到大排序输出,格式: zrangebyscore key min max
  • 移除zset中指定的元素,格式: zrem key value
  • 查看zset中的元素个数,格式: zcard key
  • 根据score的值统计在给定区间的元素个数,格式: zcount key min max

相关文章:

redis基本入门| 怎么安装redis?什么的是redis?怎么使用?

目录 一、Redis下载与安装 二、基本概念 1.什么是Redis? 2.Redis端口多少? 3.Redis是单线程还是多线程? 4.Redis为什么单线程还这么快? 三、Redis的基本操作 四、Redis的五个基本类型 1.Redis-key 2.字符串 string 3.列表 list …...

kubernetes traefik ingress 安装部署以及使用和注意点

1、简介 Traefik 是一款 open-source 边缘路由器,可让您轻松地发布服务. 它接收来自您的系统请求,并找出负责处理它们的后端服务组件。 traefik 与众不同在于它能够自动发现适合您服务的配置。 当 Traefik 检查您的基础设施时,它会发现相关信…...

电脑病毒已灭绝,是真的吗?

大家有没有这样一个疑问,觉得自己的电脑好像很久没有电脑病毒了?之前大名鼎鼎的蠕虫2000,熊猫烧香都变得不那么常见了。到底是电脑因为自身优化和杀毒软件的防护导致病毒变少了,还是本身电脑病毒变少了呢?(…...

基于RK3399+Linux QT地面测试台多参数记录仪测试平台软件设计(二)

rk3399 是由本土芯片厂商瑞芯微(Rockchip)研发的高性能、低功耗“中国芯”。在 2016 年 4 月,rk3399 首次在香港举行的电子展上亮相。芯片使用六核大 LITTLE 处理器: 包括四核的 Cortex-A53 和双核的 Cortex-A72,主频可…...

追梦之旅【数据结构篇】——详解C语言实现动态版顺序栈

详解C语言动态实现顺序栈~😎前言🙌预备小知识💞栈的概念及结构整体实现内容分析💞1.头文件编码实现🙌2.功能文件编码实现🙌3.测试文件的编写:🙌总结撒花💞😎博…...

Ubuntu 使用Nohup 部署/启动/关闭程序

目录 一、什么是nohup? 二、nohup能做什么? 三、nohup如何使用? 四、怎么查看/关闭使用nohup运行的程序? 命令 实例 一、什么是nohup? nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令&#xff0c…...

Spring 用到了哪些设计模式

关于设计模式,如果使用得当,将会使我们的代码更加简洁,并且更具扩展性。本文主要讲解Spring中如何使用策略模式,工厂方法模式以及Builder模式。1. 策略模式关于策略模式的使用方式,在Spring中其实比较简单,…...

Linux上基于PID找到对应的进程名以及所在目录

Linux上基于PID找到对应的进程名以及所在目录前言找到进程的pid通过top命令查看通过 ps -ef |grep nignx进行查看通过端口号进行查看查看nginx进程目录前言 在一台新接触的服务器,却不熟悉搭建所在目录的时候,这时候就就可以通过ps查找进程,并…...

jvm知识点与面试题

jvm 1. 定义:Java虚拟机(Java virtual machine),一种能够运行Java字节码的虚拟机。 1.1. Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 2. jvm基本结构: 2.1. 1 类加载…...

算法前缀和—Java版

前缀和概念 假设有数组 A[1,2,3,4,5,6,7] 为原数组,有数组 B作为A的前缀和数组,那么B[1,3,6,10,15,21,28];可以发现B[i] A[0]....A[i],即B[i]是数组A的前面i个数的总和。可以前缀和表示如下公式: B[i]∑j0iA[j]B[i]\s…...

拨开迷雾 看见vivo穿越周期的秘密

文|智能相对论作者|佘凯文任何一个行业都有周期性,就好像我们在做股票投资的时候,提到最多的就是周期规律,因为只有掌握规律才可以让我们赚到钱。所以不论是哪家公司都逃脱不了行业周期的宿命。行业寒冬方显强者本色就拿手机行业来说吧&#…...

浅谈常用的日志框架

文章目录1.为什么需要日志框架2.常见日志框架2.1.日志框架介绍2.2.市面上的日志框架3.Slf4j使用3.1.如何在系统中使用SLF4j3.2.可能存在的问题4.SpringBoot日志的默认配置5.SpringBoot指定日志文件6.切换日志框架1.为什么需要日志框架 通过日志的方式记录系统运行的过程或错误以…...

字节是真的难进,测开4面终上岸,压抑5个月,终于可以放声呐喊

这次字节的面试,给我的感触很深,意识到基础的重要性。一共经历了五轮面试:技术4面+HR面。 下面看正文 本人自动专业毕业,压抑了五个多月,终于鼓起勇气,去字节面试,下面是我的面试过…...

Bash初识

Bash初识 1.简介: 一.什么是shell? 用过计算机的人知道,我只要点点鼠标计算机就能按照我们的要求来进行相应的操作,那么,你有没有想过计算机为什么能够识别我们的操作呢?俗话说,人有人语,机有机…...

ElasticSearch Script 操作数据最详细介绍

文章目录ElasticSearch Script基础介绍基础用法List类型数据新增、删除nested数据新增、删除根据指定条件修改数据根据指定条件修改多个字段数据-查询条件也使用脚本根据指定条件删除nested中子数据数据根据条件删除数据删除之后结果创建脚本,通过脚本调用根据条件查…...

【黑盒模糊测试】路由器固件漏洞挖掘实战--AFL++ qemu_mode

前言 很久之前就想写AFL++的qemu_mode了,只是模糊测试专题的文章有些过于耗费时间,加上工作原因导致一直搁置。最近需要出差会用到黑盒模糊测试,所以就当做复习一遍,我记得Fuzzing 101也有一个qemu_mode的练习,有空的话下一篇文章更新吧~ 编写不易,如果能够帮助到你,希望…...

【java实现Word模板导出】Xdocreport和Freemaker

如果只是生成简单的word文件的话可以使用 Hutool 上手简单使用方便。 但如果需要导出内容比较复杂的word文件的话用那个就不合适了,这时候就需要Xdocreport这玩意了。 制作模板 新建一个word文档在需要插入变量的地方使用快捷键 Crtl F9 来生成一个域 然后右键单…...

Stable-Baselines 3 部分源代码解读 3 ppo.py

Stable-Baselines 3 部分源代码解读 ./ppo/ppo.py 前言 阅读PPO相关的源码,了解一下标准库是如何建立PPO算法以及各种tricks的,以便于自己的复现。 在Pycharm里面一直跳转,可以看到PPO类是最终继承于基类,也就是这个py文件的内…...

[业务逻辑] 订单超时怎么处理

文章目录1.订单的过程分析2.JDK自带的延时队列 (单机)3.RabbitMQ的延时消息 (消息队列方案)4.RocketMQ的定时消息 (消息队列方案)5.Redis过期监听 (Redis方案)6.定时任务分布式批处理 (扫表轮训方案)7.总结1.订单的过程分析 一个订单流程中有许多环节要用到超时处理 买家超时未…...

iOS上架及证书最新创建流程

目前使用uniapp框架开发app,大大节省了我们兼容多端应用的工作量和人手,所以目前非常缺乏ios上架和证书创建流程流程的文档假如你没有任何的打包或上架经验,参考本文有很大的收益。通常申请ios证书和上架ipa应用,是需要MAC电脑的&…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...