redis特性

2023-05-16

Redis特性

1.速度快

正常情况下Redis执行命令的速度是非常快的,官方给出的数字是读写性能可以达到10万/秒,当然这个也取决于机器的性能,这里暂且不考虑。到底什么早就了Redis的速度如此之快呢,大致归为四点:

  • Redis的所有数据都是存放在内存中的,这也是Redis速度快的主要原因
  • Redis使用C语言实现的,与操作系统底层更亲近
  • Redis使用的是单线程架构,预防了多线程可能产生竞争的问题。
  • Redis作者对Redis源代码的精打细磨

2.基于键值对的数据结构服务器

这样不近能适应很多应用场景的开发,同事也提高了效率

3.丰富的功能

除了多数据结构,Redis还提供许多额外的功能:

  • 提供了键过期功能,可以用来实现缓存
  • 提供发布订阅功能,可以用来实现消息系统
  • 支持lua脚本功能,可以利用lua创造出新的Redis命令
  • 提供了简单的事务功能,能在一定程度上保证事务特性
  • 提供了流水线功能,这样客户端能一批命令一次传到Redis,减少网络开销

4.简单稳定

  • Redis的源码很少

    早期版本只有2万行左右,3.0以后添加了集群特性,代码增至5万行左右。相对于很多NoSQL数据库代码量已经少太多了。

  • Redis使用单线程模型

    使得Redis服务器端处理模型变得简单,而且客户端开发也变得简单

  • Redis不需要依赖操作系统中的类库

5.客户端语言多

​ Redis提供了简单的TCP通信协议,可以很方便接入很多编程语言。

6.持久化

通常来看,数据放在内存中是不安全,一旦发生断电或者故障,重要的数据可能会丢失。因此Redis提供了两种持久化方式:RDB和AOF,这两种方式可以将数据保存到硬盘中,这样就保证了数据的持久化。

7.主从复制

Redis提供了复制功能,实现多个相同数据的Redis副本。复制功能是分布式Redis的基础。

8.高可用和分布式

Redis从2.8版本正式提供了高可用实现Redis Sentinel ,它能保证Redis节点的故障发现和故障自动转移。Redis从3.0版本正式提供了分布式实现Redis Cluster ,它是是Redis真正的分布式实现,提供了高可用,读写和容量的扩展性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

redis特性 的相关文章

  • 使用 Sentinels 升级 Redis 的最佳实践?

    我有 3 个 Redis 节点 由 3 个哨兵监视 我进行了搜索 文档似乎不清楚如何最好地升级此类配置 我目前使用的是 3 0 6 版本 我想升级到最新的 5 0 5 我对这方面的程序有几个疑问 升级两个大版本可以吗 我在我们的暂存环境中执
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 如何使redis中的“HSET”子键“过期”?

    我需要使 Redis 哈希中所有超过 1 个月的密钥过期 这不可能 https github com antirez redis issues 167 issuecomment 2559040 为了保持 Redis 简单 https git
  • StackExchange.Redis Get 函数抛出 TimeoutException

    我在用着StackExchange Redis与 C 和StackExchangeRedisCacheClient Get函数抛出以下异常 myCacheClient Database StringGet txtKey Text myCac
  • 为什么Redis中没有有序的hashmap?

    Redis 数据类型 http redis io topics data types包括排序集 http redis io topics data types intro sorted sets以及其他用于键值存储的必要数据结构 但我想知道
  • 想要在后台不间断地运行redis-server

    我已经下载了 redis 2 6 16 tar gz 文件并安装成功 安装后我运行 src redis server 它工作正常 但我不想每次都手动运行 src redis server 而是希望 redis server 作为后台进程持续
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客
  • Amazon Elasticache Redis 集群 - 无法获取端点

    我需要获取 Amazon Elasticache 中 Redis 集群的终端节点 以下代码适用于 Memcached 集群 但不适用于 Redis import com amazonaws auth AWSCredentials impor
  • 创建 C++ Redis 模块 - “不导出 RedisModule_OnLoad() 符号”

    我在加载 Redis 模块时遇到一些问题 我只是复制来自的示例https redis io topics modules intro https redis io topics modules intro 但我把它剥下来了 include
  • Spring Redis 排序键

    我在 Redis Spring Data Redis 中有以下键 localhost gt Keys 1 id 1 Name C5796 Site DRG1 2 id 2 Name CX1XE Site DG1 3 id 3 Name C5
  • 将文件传递给活动作业/后台作业

    我通过标准文件输入接收请求参数中的文件 def create file params file upload Upload create file file filename img png end 但是 对于大型上传 我想在后台作业中执行
  • 如何在Redis中正确存储图片?

    决定将图像存储在Redis中 如何正确执行 现在我这样做 redis gt set image path here is the base64 image code 我不确定这是否正常 将图片存储在Redis中是完全可以的 Redis 键和
  • 如何通过ARM模板输出返回Redis的primaryKey?

    我正在尝试借助下面列出的 ARM 模板来部署 Redis 然后返回其主密钥 Azure 门户中 Redis 的 访问密钥 gt 主 下可用的秘密字符串 但是 我从管道 AzureResourceManagerTemplateDeployme
  • ServiceStack PooledRedisClientManager 故障转移如何工作?

    根据 git commit 消息 ServiceStack 最近添加了故障转移支持 我最初认为这意味着我可以关闭我的一个 Redis 实例 并且我的池客户端管理器将优雅地处理故障转移并尝试与我的备用 Redis 实例之一连接 不幸的是 我的
  • JedisPoolConfig 不可分配给 GenericObjectPoolConfig

    我有一个基于 Spring 的 Java Web 应用程序托管在 Heroku 上 我正在尝试使用 Redis 实现来利用 Spring 缓存抽象 当服务器启动时 我收到一条错误消息 Type redis clients jedis Jed
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash
  • 使用 Gorilla 会话自定义后端有什么优势?

    我想使用 Redis 进行会话管理 但我不明白使用 Redis 作为 Gorilla 会话包的自定义后端比直接使用它有什么优势 Gorilla 会话包的链接 http www gorillatoolkit org pkg sessions
  • Spring-boot中将redis-cache反序列化为对象的问题

    我在 Client 类中使用 JsonNode 来处理 MySQL 8 数据库中 JSON 类型的字段 即使对于 API 请求 它也能很好地工作 但是当我使用 Redis 启用缓存 我确实需要它 时 我注意到 Redis 无法序列化 Jso
  • 无法通过节点应用程序连接到redis,两者都在docker中

    我正在尝试将我的应用程序连接到 redis 但我得到 ioredis Unhandled error event Error connect ECONNREFUSED 127 0 0 1 6379 当我做 docker exec it ed

随机推荐