首页 > 数据库 >#认识Redis

#认识Redis

时间:2023-03-15 22:24:08浏览次数:33  
标签:缓存 认识 数据库 Redis session 内存 数据

Redis (全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它是一个运行在内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。

Redis 比其他 key-value 缓存产品有以下三个特点:

  • Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。
  • Redis 不仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。
  • Redis 支持主从复制,即 master-slave 模式的数据备份。

Redis 的特点

  • 高性能: Redis 将所有数据集存储在内存中,可以在入门级 Linux 机器中每秒写(SET)11 万次,读(GET)8.1 万次。Redis 支持 Pipelining 命令,可一次发送多条命令来提高吞吐率,减少通信延迟。
  • 持久化:当所有数据都存在于内存中时,可以根据自上次保存以来经过的时间和/或更新次数,使用灵活的策略将更改异步保存在磁盘上。Redis 支持仅附加文件(AOF)持久化模式。
  • 数据结构: Redis 支持各种类型的数据结构,例如字符串、散列、集合、列表、带有范围查询的有序集、位图、超级日志和带有半径查询的地理空间索引。
  • 原子操作:处理不同数据类型的 Redis 操作是原子操作,因此可以安全地 SET 或 INCR 键,添加和删除集合中的元素等。
  • 支持的语言: Redis 支持许多语言,如 C、C++、Erlang、Go、Haskell、Java、JavaScript(Node.js)、Lua、Objective-C、Perl、PHP、Python、R、Ruby、Rust、Scala、Smalltalk 等。
  • 主/从复制: Redis 遵循非常简单快速的主/从复制。配置文件中只需要一行来设置它,而 Slave 在 Amazon EC2 实例上完成 10 MM key 集的初始同步只需要 21 秒。
  • 分片: Redis 支持分片。与其他键值存储一样,跨多个 Redis 实例分发数据集非常容易。
  • 可移植: Redis 是用 C 编写的,适用于大多数 POSIX 系统,如 Linux、BSD、Mac OS X、Solaris 等。

Redis主要能做什么

a、缓存,这毫无疑问是Redis被大众所熟知的功能,也是其最强大的功能之一,在提示服务器性能方面非常有效

b、排行榜功能,利用Redis中有序集合的特性可以很容易的实现排行榜功能,由于排行榜功能一般都要求实时性,如果采用传统数据库来实现将会非常麻烦。

c、计数器/限速器,利用Redis中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数以及在需要限制某些用户访问某个api的频率时(例如抢购),我们均可以使用Redis来代替传统数据库实现,因为传统数据库在实现该类需求时会有非常大的读写压力。

d、好友关系,利用集合的一些命令,如交集、差集、并集等能方便的搞定一些共同好友及共同爱好等功能

e、简单消息队列,除了Redis自身的发布/订阅模式,我们也可以使用其List来实现一个简单的消息队列,例如:到货通知、邮件发送之类的需求,不需要高可靠但是会带来非常大的db压力,完全可以用List来完成异步解耦

f、session共享,一般情况下session都是存在服务器的文件中,在集群部署下,同一用户登陆时session文件可能落在不同的服务器上,因此导致了频繁的登陆操作,采用Redis保存session信息后,无论用户访问到哪台机器都能够获取到对应的session信息。

当然Redis也不是万能的,如果某部分数据内容非常大或者说该部分数据访问频率很低,那么这部分数据便不建议存储在Redis中,数据太大会增加成本,访问频率过低则非常浪费内存资源

Mysql与Redis区别

MySQL是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢.

Redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限.

 

 

标签:缓存,认识,数据库,Redis,session,内存,数据
From: https://www.cnblogs.com/canyooo/p/17220409.html

相关文章

  • Redis基础知识
    IO多路复用IO:I/O是Input输入/Output输出的简称,通常指数据在内部存储器(内存)和外部存储器(硬盘、优盘)或其他周边设备之间的输入和输出。  输入/输出是信息处理系统(计算机)......
  • 狂神--Redis-Docker启动脚本
    1.docker版本20dockerinfoClient:Context:defaultDebugMode:falsePlugins:app:DockerApp(DockerInc.,v0.9.1-beta3)buildx:BuildwithBuil......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 05.认识GameMode&自动生成AI角色
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本篇文章将会讲述UE中Gamemode的基本概念,并在C++中开发GameMode,为游戏设置一个简单的玩法:使用环境查询自动......
  • 初级 - redis 安装
    1、redis概述redis官网地址:https://redis.io/redisgithub地址:https://github.com/redis/redis/tree/6.22、redis安装2.1redisdocker-compose安装1、先去gith......
  • docker redis常用命令
    一、dockerredis服务部署1.下载官方redis镜像dockerpullredis2.运行镜像,返回容器id。此时redis服务已经开启dockerrun-d-p6379:6379redis3.进入容器(客户端......
  • ANTLR 宝藏入门之路 hello World初认识
    ANTLR宝藏入门之路 helloWorld初认识解释一下:1,在g4文件中定义业务逻辑规则2,g4自动生成词法分析、语法分析等一堆代码3,编写java代码,调用g4自动生成的class类4,输入要......
  • Mac安装Redis
    Mac安装Redis1、首先,检查是否已经安装Homebrew,如果没有安装Homebrew,请先安装,我这里推荐安装国内的Homebrew会快一些,打开Mac终端输入国内npm即可安装,命令由于太敏感,可以......
  • docker 启动redis
    1、拉取最新镜像dockerpullredis2、启动redisdockerrun-d-v/data/redis:/data--nameredis-p6379:6379redisredis-server--requirepass"xx.com"--appe......
  • Java+Redis 通过Lua 完成库存扣减,创建消息队列,异步处理消息--实战
    需要完成功能借助redisStream数据结构实现消息队列,异步完成订单创建,其中涉及到了缓存(击穿,穿透,雪崩),锁(Redisson),并发处理,异步处理,Lua脚本IDE:IDEA2022 1、读取库存数......
  • 【认识新朋友】之——strstr
    今天我们来认识个新朋友,是个字符串函数,叫strstr。——师傅,你是干啥工作的?——好家伙,考我英语是吧?(8hourslater……)咳咳,通过一定的翻译工具,我大概了解了你的工作原理:就是传......