1. 程式人生 > >10分鐘寫出JAVA最精簡Redis客戶端

10分鐘寫出JAVA最精簡Redis客戶端

JAVA開發人員出去面試,基本是必問Redis。

redis分為客戶端和服務端兩個部分,這次就是通過手寫一個Redis的客戶端,讓你掌握裡面的知識。

RESP協議

RESP協議是Redis客戶端和服務端之間的通訊協議,這是它的官方文件:https://redis.io/topics/protocol。

我就是根據這個協議來實現客戶端的。


協議幾個要點:

1、客戶端和服務端通過TCP進行資料互動

2、 傳輸的資料遵循RESP協議,如下:

每一段資料通過 進行分隔,每段資料通過一個特殊標誌作為開頭

* 代表陣列

$ 多行字串

+ 單行資訊

- 錯誤資訊

: 整型數字

不能理解沒關係,看完我的示例,你自己多練幾把就明白了。

客戶端步驟1 - 建立TCP連線


java socket網路程式設計

客戶端步驟2 - 實現set/get命令


不同的命令不同的報文-resp協議

客戶端步驟3 - 測試


最簡客戶端

重要的是思路,希望對你有啟發。這個java學習(q-u-n): 678-241-563 期待大家一起進q-u-n交流討論,講實話還是一個非常適合學習的地方的。各種入門資料啊,進階資料啊,框架資料啊 等等

JAVA學習不易,不要好高騖遠,需要沉下心繫統性的學習

相關推薦

10分鐘JAVA精簡Redis客戶

JAVA開發人員出去面試,基本是必問Redis。redis分為客戶端和服務端兩個部分,這次就是通過手寫一個Redis的客戶端,讓你掌握裡面的知識。RESP協議RESP協議是Redis客戶端和服務端之間的通訊協議,這是它的官方文件:https://redis.io/topics

華為面試題(8分鐘程式碼) 有兩個陣列a,b,大小都為n,陣列元素的值任意,無序; 要求:通過交換a,b中的元素,使陣列a元素的和與陣列b元素的和之間的差

先上程式碼 java程式碼: public class MinDiff { public static void main(String[] args){ int[] aa={2,5,4,3,1,0}; int[] bb={7,9,8,10,6,11}

CentOS 10分鐘快速安裝rabbitMQ 新版

rabbitmq erlang yum1、配置erlang yum 源 (根據自己系統版本選擇合適的源 https://github.com/rabbitmq/erlang-rpm) vim /etc/yum.repos.d/rabbitmq-erlang.repo [rabbitmq-erla

跟我一起作業系統(一)——10分鐘個作業系統

轉載註明出處: http://www.cnblogs.com/lucasysfeng/p/4846119.html   專案地址:https://github.com/lucasysfeng/lucasOS     想動手,但不知從何入手,是學習一門新知識普遍會遇到的尷尬點。筆

REDIS (15)手Java Redis客戶(1)RESP協議分析(未完)

一直對Jedis有點興趣, 現在靜下心來抽空看看redis客戶端和消費端是怎麼連線的 1. 對Jedis的get命令抓包 傳送 接收 可見是明文協議,0d 0a 是 \r\n我們找下文件 redis 序列化協議 2. 模仿協議內容傳送並接收內容 2.1 傳統BIO

8分鐘程式碼的華為面試題?不要被標題迷惑!

在程式設計師的江湖中,有一個流傳了很久的故事,那就是: 華為面試題(8分鐘寫出程式碼): 有兩個陣列a,b,大小都為n,陣列元素的值任意,無序; 要求:通過交換a,b中的元素,使陣列a元素的和與陣列b元素的和之間的差最小 華為面試題(8分鐘寫出程式碼)

10分鐘搞定Java帶token驗證的註冊登入

這是spring boot框架下的登入註冊功能,並且帶有token驗證,可以用於生產環境的例項原理太簡單,直接上程式碼,讓你知道什麼叫拿來主義!!1,java中專案介紹 2,resources 中的內容3,用法:建立好所有的需要的類,,資料庫中建立好需要的資料庫,程式碼複製貼上,啟動,就可以用了實際程式碼:&

常見到的5個runtime&nbs…

所謂系統異常,就是…..,它們都是RuntimeException的子類,在jdk doc中查RuntimeException類,就可以看到其所有的子類列表,也就是看到了所有的系統異常。我比較有印象的系統異常有:NullPointerException、ArrayIndexOutOfBoundsExc

“狗屁不通文章生成器”登頂GitHub熱榜,分分鐘萬字形式主義大作

一、垃圾文字生成器介紹 最近在瀏覽GitHub的時候,發現了這樣一個骨骼清奇的雷人專案,而且熱度還特別高。 專案中文名:狗屁不通文章生成器 專案英文名:BullshitGenerator 根據作者的介紹,他是偶爾需要一些中文文字用於GUI開發時測試文字渲染,因此開發了這個廢話生成器。但由於生成的廢話實在是

10分鐘搞定 Java 併發佇列好嗎?好的

| **好看請贊,養成習慣** > - 你有一個思想,我有一個思想,我們交換後,一個人就有兩個思想 > > - If you can NOT explain it simply, you do NOT understand it well enough 現陸續將Demo程式碼和技術文

redis客戶連接,大連接數查詢與設置

指定 col node 網絡 service服務 限制 style nbsp free ##redis客戶端連接數 redis通過監聽一個TCP端口或socket的方式接收來自客戶端的連接, 當與客戶端建立連接後,redis內部會進行如下操作:(1)客戶端socket會

java 使用htmlUI 做winform win桌面客戶程式(一)

大家好,今天給大家帶來使用java+html寫winform  win客戶端桌面程式的教程。 在讀本文之前你首先要能接受: 1   客戶端基於java+html所以 軟體包中需要包含 jre和 cef(chrome核心)的dll,軟體包比較大。 2 &

【Linux】UDP與TCP的對比並TCP和UDP的服務

UDP   (1.)無連線            UDP在傳輸資料的時候不需要建立連線,可以直接傳輸。(這一點在UDP服務端程式中可以看到),因此傳輸速度比較快,適用於傳視訊,音訊。 (2.)傳輸層協議 (3.)不可靠傳輸             a:

StackExchange.Redis客戶主從配置,以及哨兵配置

今天簡單分享一下StackExchange.Redis客戶端中配置主從分離以及哨兵的配置。 為什麼要有這篇分享呢,是因為我之前也有一些疑問,相信學習Redis的朋友都有過相同的疑問。 在程式碼中,如何分別操作主從資料庫?,也就是說,如何只向主資料庫寫,而讀取

Redisson 3.10.0 和 2.15.0 釋出,Redis 客戶

   Redisson 3.10.0 和 2.15.0 已釋出,Redisson 是架設在 Redis 基礎上的一個 Java 駐記憶體資料網格 (In-Memory Data Grid) 。 Redisson 在基於 NIO 的 Netty 框架上,充分利用了 Re

java 使用htmlUI 做winform win桌面客戶程式(一)

大家好,今天給大家帶來使用java+html寫winform  win客戶端桌面程式的教程。 在讀本文之前你首先要能接受: 1   客戶端基於java+html所以 軟體包中需要包含 jre和 cef(chrome核心)的dll,軟體包比較大。 2  因為jcef 國內

JAVA之Jedis 對 Redis客戶分散式與節點叢集兩者的區別

公司專案需要做web端和安卓端:web端使用ehcache做快取,安卓端使用redis來存放token和使用者登入後產生的資訊(相當於session的功能);因為專案屬於雲平臺,資料會比較多,所以單機存放壓力有點大,所以現在構建的專案暫時先做橫向的redis擴充套件;即用多

用C、python手redis客戶,相容redis叢集 (-MOVED和-ASK),快速搭建redis叢集

     想沒想過,自己寫一個redis客戶端,是不是很難呢?   其實,並不是特別難。   首先,要知道redis服務端用的通訊協議,建議直接去官網看,部落格啥的其實也是從官網摘抄的,或者從其他部落格抄的(忽略)。   協議說明中文官網地址: http://www.redis.cn/topics/proto

常用的Redis客戶的並發模型(轉)

war sta 進程 過程 blog 有效 tro nal 做的 偽代碼模型 # get lock lock = 0 while lock != 1: timestamp = current Unix time + lock timeou

redis 客戶無密碼交互刪除key

redisredis-cli -h www.badiu.com -a **** keys ‘key‘| xargs redis-cli -h www.abidu.com -a **** del-a 密碼www.baidu.com 地址本文出自 “磚家博客” 博客,請務必保留此出處http://wsxx