首页 > 数据库 >Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!

Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!

时间:2023-11-05 20:59:13浏览次数:60  
标签:200 Star Redis 开源 聊天 服务器 客户端

Redis创始人开源最小聊天服务器,仅200行代码,几天功夫已获2.8K Star!

 

中午时候,在技术交流群里聊起关于Redis创始人的一些趣事,比如离开Redis之后,去写科幻小说之类的。

因为好奇科幻小说,TJ君就去搜索了一下。结果一搜,发现Redis作者最近居然又搞了个新活儿!

世界上最小的聊天服务器

这次Redis作者的新开源项目名叫:SmallChat。 从关于内容中可以知道,这个开源项目是要打造最小的聊天服务器。

从开源项目的内容中来看,确实如此,就下面这些:

代码部分除去大量注释之后,更是惊人的只有200+行代码,可以说真的是做到了极致的精简。

起源与未来

在该项目的README中,目前还没有更多关于该项目的使用说明,更多的是关于该项目的背景和未来展望。

内容也是非常值得大家细品,TJ君从中感受到一名优秀开发者的思维模式,是非常值得大家去学习的。我们也可以去多学习这种思维方式,来多创造一些更有意思的东西。

下面一起来看看他的故事:

昨天和几个朋友聊天,大部分都是前端开发人员,离系统编程有点远。我们正在回忆 IRC 的旧时光。我说道:编写一个非常简单的 IRC 服务器是每个人都应该做的经历(我向他们展示了我用 TCL 编写的实现;我很震惊我在 18 年前写了它:时间过得很快)。这样的程序中有一些非常有趣的部分。单个进程执行多路复用、获取客户端状态并在客户端拥有新数据后尝试快速访问此类状态,等等。

但后来讨论发生了变化,我想,我将向您展示一个用 C 编写的非常简单的示例。您可以编写的最小的聊天服务器是什么?为了真正做到最小化,我们不应该需要任何合适的客户。即使不是很好,它也应该与 telnet 或者 netcat 一起使用。服务器的主要操作只是接收一些聊天行并将其发送到所有其他客户端,有时称为扇出操作。然而,这需要适当的功能,然后是缓冲等等。我们希望它更简单:让我们使用内核缓冲区进行欺骗,并假装我们每次都从客户端收到完整的行(这个假设在实践中通常是正确的,所以事情还算有效)。

好吧,通过这些技巧,我们可以实现一个聊天,甚至能够让用户在短短 200 行代码中设置他们的昵称(当然,删除空格和注释)。因为我写了这个小程序作为给我的朋友们的例子,所以我决定也将它推送到 GitHub 上。

关于未来的工作:

在接下来的几天里,我将继续修改这个程序,以使其进化。不同的演变步骤将根据我的写作系统软件系列的 YouTube 剧集(涵盖此类变化)进行标记。这是我的计划(可能会改变,但或多或​​少这就是我想要涵盖的内容):

  • 实现读和写的缓冲
  • 避免使用线性数组,使用字典数据结构来保存客户端状态
  • 编写适当的客户端:能够处理异步事件的行编辑
  • 从 select(2) 切换到更高级的 API
  • 用于聊天的简单对称加密

怎么样?一个有趣的开源项目就这样诞生了。好了,今天的分享就到这里。最后,老规矩,奉上开源地址:https://github.com/antirez/smallchat , 感兴趣的可以去围观代码。

欢迎关注我的公众号:程序猿DD。第一时间了解前沿行业消息、分享深度技术干货、获取优质学习资源

标签:200,Star,Redis,开源,聊天,服务器,客户端
From: https://www.cnblogs.com/sexintercourse/p/17811123.html

相关文章

  • Redis设置密码以及用redis-cli -a连接redis实例
    要为Redis添加密码,您可以按照以下步骤进行操作:打开Redis配置文件。在大多数情况下,Redis的配置文件名为redis.conf,可以在Redis的安装目录中找到。在配置文件中,找到并取消注释(去掉前面的#符号)以启用密码验证的配置项。找到以下行并确保其没有被注释:requirepassyour_password将your_p......
  • 如何统计redis操作失败的次数
    要统计Redis操作失败的次数,你可以使用Redis的监控功能和相关命令。以下是一种可能的方法:开启Redis的监控功能:在Redis的配置文件中,找到redis.conf文件并确保以下行没有被注释掉:#默认禁用,你可以通过以下命令来开启:configsetnotify-keyspace-eventsKEA这将启用键空间通......
  • 简述 NoSQL 和NoSQL 中的 Redis
    简述NoSQL和NoSQL中的Redis引言 Redis是当前比较热门的NoSQL数据库产品之一,是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的高性能键值对(Key-Value)数据库(区别于MySQL的二维表格的形式存储)。它通过提供多种键值数据类型来适应不同场......
  • [NewStarCTF WEEK5] pwn-planet 详解
    这道题目更多是考pwner的逆向功底(虽然程序逻辑也不是非常复杂=_=)老规矩,先checksec查看程序保护全开看一下main函数__int64__fastcallmain(inta1,char**a2,char**a3){unsignedintv4;//eaxchars1[88];//[rsp+20h][rbp-60h]BYREFunsigned__int64v6;......
  • Redis问题大全
    一、什么是Redis?  Redis是一种支持key-value键值对数据存储的NoSQL数据库。与传统数据库不同的是,Redis的数据是保存在内存中的(内存数据库,支持持久化),因此读写速度非常快,被广泛应用于分布式缓存方向。  redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记......
  • redis的几种部署模式
     一,redis有哪几种部署模式Redis有几种常见的部署模式,包括单机模式、主从模式、哨兵模式和集群模式。单机模式:这是最简单的部署方式,仅需要在单个机器上启动Redis实例。这种模式适用于数据量较小、业务压力较小的场景。其优点是操作简单、成本低,适用于小型业务和开发测试环境。......
  • Redis 安装与配置
    Redis概述与安装GCC环境的安装与测试一、安装(1)在线安装GCCyum-yinstallgccgcc-c++autoconfpcrepcre-develmakeautomake#可选yum-yinstallwgethttpd-toolsvim1.就把gcc当成c语言编译器,g++当成c++语言编译器用就是了.(知乎)2.wget是一个从网络上自动下......
  • Redis 有哪些数据结构?
    Redis有五种基本数据结构。string字符串最基础的数据结构。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。字符串主要有以下几个典型使用场景:缓存功能计数共享Session......
  • 2.1k star,推荐一个远程监控和管理 PC 的工具
    可以直观的看下界面:可以去体验demo,开源地址在文末:TacticalRMM是一个远程监控和管理工具,由Django,Vue和Go构建。它使用一个用golang编写的代理,并与MeshCentral集成。这个工具可以让用户远程控制、监控和管理Windows,Linux和Mac的设备,提供诸如远程桌面、远程命......
  • 花了三年时间开发的开源项目,终于500 个 Star 了!
    waynboot-mall商城项目从疫情开始初期着手准备,到现在已经经过了3年多的时间,从项目初期到现在,一个人持续迭代,修复漏洞,添加功能,经历了前端开发工具从vue2、vue-cli切换到vue3、vite的转变,也经历了后端技术框架从SpringBoot2到SpringBoot3的变迁。这个项目已经代表了过......