当前位置: 首页 > 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
  • 查看更多命令:官方地址


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

相关文章:

  • 语音识别质量的跟踪
  • 【Unity完整游戏开发案例】从0做一个太空大战游戏
  • 火语言RPA--企业微信群通知
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day21
  • OpenGl ES 3.0 笔记一:初步概念
  • Node.js CSRF 保护指南:示例及启用方法
  • Macos m系列芯片环境下python3安装mysqlclient系列问题
  • Java 深度与实战 · 每日一读 :高频面试真题解析 · ReentrantLock / CAS / AQS 篇
  • JVM常见的垃圾回收器
  • PyDantic入门介绍:Python数据验证与解析的利器
  • WPF之XAML基础
  • Java + Spring Boot + MyBatis获取以及持久化sql语句的方法
  • Redux 容器 | 原理解析
  • shell编程基础知识及脚本示例
  • 设计模式每日硬核训练 Day 16:责任链模式(Chain of Responsibility Pattern)完整讲解与实战应用
  • 分析型数据库入门指南:如何选择适合你的实时分析工具?
  • 哈希表基础
  • Ollama 在本地分析文件夹中的文件
  • 本安型交换机 + TSN:煤矿智能化的关键拼图
  • AI大模型从0到1记录学习 linux day21
  • 科学时代重读“老子”的意义——对谈《老子智慧八十一讲》
  • 李勇已任内蒙古乌兰察布市委副书记,曾在中央编办任职
  • 朝鲜证实出兵俄罗斯协助收复库尔斯克
  • 国家统计局:一季度规模以上工业企业利润延续持续恢复态势
  • 可实时追踪血液中单个细胞的穿戴医疗设备问世
  • 伊朗港口爆炸最新情况:14死700多伤,大火延烧,调查困难