首页 > 数据库 >小小Redis数据类型,拿捏

小小Redis数据类型,拿捏

时间:2024-05-11 20:19:57浏览次数:24  
标签:存储 set hash 数据类型 Redis 拿捏 数据

面试遇到过的Redis问题

  • Redis的数据类型

  • 怎么利用Redis解决超卖问题

1. 什么是Redis

Redis就是一个非关系型数据库(NoSQL),我们知道关系型数据库MySQL,在MySQL里我们对于数据的增删改查需要SQL语句(select * from...),麻不麻烦——麻烦,慢不慢——当然是慢的,因为数据是存在硬盘上的,存在硬盘上的数据明显特点就是重启电脑数据还在,但是我们要对数据进行处理的时候就需要将数据拿到内存里

所以聪明的人类想到,既然操作存储在硬盘里的数据很慢,那如果我们将数据存在内存里,操作起来不就快了吗

所以NoSQL就出现了,而Redis就是常见的NoSQL

2. Redis概念

Redis (Remote Dictionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。

3. Redis特征

(1)数据间没有必然的关联关系;

(2)内部采用单线程机制进行工作;

(3)高性能。

官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是81000次/s。

(4)多数据类型支持

字符串类型:string list

列表类型:hash set

散列类型:zset/sorted_set

集合类型

有序集合类型

(5)支持持久化,可以进行数据灾难恢复

4. Redis常见的数据类型

string 、 hash 、 list 、 set 、 sorted_set/zset

1. String

(1)存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型。

string,他就是存一个字符串儿,注意是value那一部分是一个字符串,它是redis中最基本、最简单的存储数据的格式。

(2)存储数据的格式:一个存储空间保存一个数据

每一个空间中只能保存一个字符串信息,这个信息里边如果是存的纯数字,他也能当数字使用。

(3)存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用

2.hash

(1)新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息

(2)需要的存储结构:一个存储空间保存多个键值对数据

(3)hash类型:底层使用哈希表结构实现数据存储

(4)hash存储和String类型存储的区别就是,string在value部分只能存储一种数据,如果一个数据有多条信息呢,比如一个学生信息,如果利用string存储就要存好多条,但是hash可以将name、age等装在一起,如下图

3. list

可重复

(1)数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分

(2)需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序

(3)list类型:保存多个数据,底层使用双向链表存储结构实现

4. set

不可重复

(1)新的存储需求:存储大量的数据,在查询方面提供更高的效率

(2)需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询

(3)set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的

5. sorted_set/zset

Redis的SortedSet是一个可排序的set集合,每部的每个元素都带有一个score属性,可以基于score属性对元素进行排序。底层的实现是一个跳表(SkipList)加hash表

Sorted具有下列特征

  • 可排序
  • 元素不重复
  • 查询速度快

所以经常被用来实现排行榜等功能


这篇只介绍了数据类型,下篇介绍Redis的持久化,不急慢慢来ovo

标签:存储,set,hash,数据类型,Redis,拿捏,数据
From: https://www.cnblogs.com/always-uie/p/18187101

相关文章

  • 使用 Redisson 框架基于 Redis 实现分布式锁
    分布式锁可以采用数据库、zookeeper、redis三种方式实现。采用数据库实现方式,主要采用表字段的唯一索引特性。数据库是非常昂贵的资源,非常不推荐,最致命就是性能,不要去增加不必要的负担。采用zookeeper的实现方式,主要使用其为客户端创建临时有序节点的特性,在我之前的博客有介......
  • 基于PG开发数据库中出现PSQLException: 错误,无法确定参数$1的数据类型
    问题描述在开发接口适配瀚高数据库时,出现此错误:同样的xml文件在达梦、金仓、Mysql中使用模糊查询时未发现错误;...likeconcat('%',#{name},'%')后经排查与数据库连接中:jdbc:highgo://.../test?stringtype=unspecified存在联系。加入``是为了避免ERROR:columnisofty......
  • centos7下redis集群部署
    1、环境准备安装redis所需依赖环境#在线:yum-yinstallepel-releasegcc #离线:#下载yuminstall--downloadonly--downloaddir=/home/filesepel-releasegcc#将依赖包放到离线服务器,进入目录cd/home/files#执行安装rpm-Uvh./*.rpm--node......
  • docker redis
    1.创建redis的Docker容器时,容器处于Exited(1)或Restarting(0)状态原因:在配置文件/etc/redis/redis.conf中'daemonize'设置为yes时,即为后台运行,也就是Redis服务器会以守护进程的方式在后台默默地运行。在这种情况下,Redis服务器会脱离终端地控制,并在后台持续运行,不会输出日志信息......
  • 【redis学习】Redis-IO多路复用
    为什么要有IO多路复用大家印象中的redis都是单线程的,没有加锁的操作,因此才会是redis这么快的原因其中之一。先暂且不说redis究竟是不是单线程,即便是单线程的,作为服务提供方,面对成百上千的客户端连接请求,读写操作,单线程是怎么做到高效的处理这些请求?单线程处理socket连接,面对客户......
  • Redis高可用架构
    redis架构的演进单机、主从、集群特性/配置Redis主从复制Redis哨兵Redis集群主要目的数据备份与读写分离高可用性和故障自动切换高并发和数据分散处理架构一个主节点和多个从节点监控主从结构并自动切换多个主节点,数据分片数据复制主节点到从节点监控并管......
  • redis-sentinel
    首先搭建1主两从的redis主从服务mkdir-pv/etc/redis/mkdir-pv/redis/db{2,3}cd/etc/redis/redis主配置不变vim/usr/local/redis-6.2.6/bin/redis.confrequirepass"lzjasdqq"appendonlyyesdaemonizeyespidfile"/var/run/redis_6380.pid"logfile"......
  • redis持久化
    redis持久化rdbaofvimredis.confprotected-modeyesport6379tcp-backlog511timeout0tcp-keepalive300daemonizeyespidfile/var/run/redis_6379.pidloglevelnoticelogfile"/var/log/redis/redis.log"databases16always-show-logonoset-p......
  • redis下载和redisUI下载
    Redis安装与RedisUI的安装首先打开这个链接https://www.lanzouw.com/iuPGj1y86lja下载好redis文件看图点击redis-desktop-manager-2019.4.0.exe文件下载redisUI无脑一直next就行了第二步1.解压redis文件得到......
  • .NET 缓存:内存缓存 IMemoryCache、分布式缓存 IDistributedCache(Redis)
    .NET缓存:内存缓存IMemoryCache、分布式缓存IDistributedCache(Redis)  .NET缓存里分了几类,主要学习内存缓存、分布式缓存一、内存缓存IMemoryCache1、Program注入缓存builder.Services.AddMemoryCache();2、相关方法及参数Get、TryGetValue、GetOrCreate、GetOrCrea......