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

Redis 笔记(三)-Redis 基本知识及五大数据类型

一、redis 基本知识

  • redis 默认有 16个 数据库,config get databases 查看数据库数量
127.0.0.1:6379> config get databases        # 查看数据库数量
1) "databases"
2) "16"
  • 默认使用的是第 0个
    16 个数据库为:DB 0 ~ DB 15,默认使用 DB 0
  • 可以使用 select 进行切换数据库
    select n 切换到 DB ndbsize 可以查看当前数据库的大小,与 key 数量相关。
127.0.0.1:6379> select 1        # 切换到数据 1
OK
127.0.0.1:6379[1]> dbsize        # 查看数据库大小
(integer) 0
127.0.0.1:6379[1]> keys *       # 查看数据库中所有的 key
  • 清除当前的数据库 flushdb
127.0.0.1:6379> flushdb      # 清除当前的数据库
  • 清除所有的数据库 flushall
127.0.0.1:6379> flushall       # 清除所有的数据库
  • Redis 是单线程的,Redis 是基于内存操作的
    所以 Redis 的性能瓶颈不是 CPU ,而是机器内存和网络带宽。

  • Redis 为什么单线程还这么快?QPS达到10W+
    误区1:高性能的服务器一定是多线程的?
    误区2:多线程(CPU上下文会切换!)一定比单线程效率高!

  • 核心:Redis 是将所有的数据放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!),对于内存系统来说,如果没有上下文切换效率就是最高的,多次读写都是在一个 CPU 上的,在内存存储数据情况下,单线程就是最佳的方案。

二、五大数据类型

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

Redis-key

  • redis 中无论什么数据类型,在数据库中都是以 key-value 形式保存,通过进行对 Redis-key 的操作,来完成对数据库中数据的操作。

常用命令:

  1. exists [key] :判断key是否存在
  2. del [key]:删除键值对
  3. move [key] [db]:将键值对移动到指定数据库
  4. expire [key] [seconds]:设置过期时间
  5. ttl [key]:(time to live) 查看当前 key 剩余时间 -2 代表已经过期
  6. type [key]:查看 key 的类型

type 数据返回类型:

  • none (key 不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)

三、测试

127.0.0.1:6379> keys *        # 查看当前数据库所有key
(empty list or set)
(empty array)
127.0.0.1:6379> set name yj        # set key
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> exists name        # 判断键是否存在
(integer) 1        # 存在
127.0.0.1:6379> exists name1
(integer) 0        # 不存在
127.0.0.1:6379> move name 1        # 将 name 移动到数据库1 中
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> set name yj
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> get name
"yj"
127.0.0.1:6379> expire name 10        # 设置键值对的过期时间
(integer) 1
127.0.0.1:6379> ttl name        # 查看当前 key 的剩余时间
(integer) -2        # -2 已经过期
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> move age         # 将 age 移动到数据库1 中
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name"
127.0.0.1:6379[1]> select 0        # 切换到数据库 0中
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> select 1        # 切换到数据库 1中
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name"
127.0.0.1:6379[1]> del name        # 删除键值对
(integer) 1        # 删除个数
127.0.0.1:6379[1]> keys *
1) "age"
127.0.0.1:6379[1]> del age
(integer) 1
127.0.0.1:6379[1]> keys *
(empty array)
127.0.0.1:6379> type name        查看value的数据类型
string
  • 查看更多命令:官方地址


喜欢的朋友记得点赞、收藏、关注哦!!!

http://www.xdnf.cn/news/173683.html

相关文章:

  • day004
  • PostgreSQL WAL 幂等性详解
  • PH热榜 | 2025-04-26
  • 论文速报《ChatBEV:理解BEV地图的视觉语言模型新突破》
  • uniapp自定义一个选择年月日时分的组件。
  • Linux CentOS 安装Python 3.8.0
  • 8、HTTPD服务--CGI机制
  • BR_单时隙/多时隙灵敏度(Sensitivity-single/multi slot packets)
  • Apache Tomcat 漏洞(CVE-2025-24813)导致服务器面临 RCE 风险
  • 域名系统DNS
  • 03.04、化栈为队
  • PAT第七题素数对猜想
  • 手机充电进入“秒充“时代:泡面刚下锅,电量已满格
  • 贪心算法和动态规划
  • 【Flutter】Unity 三端封装方案:Android / iOS / Web
  • EN18031测试,EN18031认证,EN18031报告解读
  • MySQL 锁等待超时问题解析:Lock wait timeout exceeded;try restarting transaction
  • PLC在仪表控制系统中的应用
  • windows10系统:如何把文件夹里的图片直接显示出来?
  • vue3实现对自定义组件自由拖动效果
  • 如何有效防止 SQL 注入攻击?
  • [创业之路-341]:华为人力资源管理 - 华为技术专家体系详解
  • 论文导读 - 基于大规模测量与多任务深度学习的电子鼻系统实现目标识别、浓度预测与状态判断
  • 计算机网络全栈精讲:从 TCP/UDP 原理到 Socket 编程与 HTTP 协议实战(含代码实现)
  • 深入浅出JVM - Java架构师面试实战
  • 【网络原理】 网络编程套接字
  • Animate 中HTMLCanvas 画布下的鼠标事件列表(DOM 鼠标)
  • 关于IDEA的循环依赖问题
  • 如何在 iPhone 上恢复已删除的联系人:简短指南
  • Spring MVC 拦截器教程