zhoulin@:/opt/redis307/src:gdb ./redis-server --啟動redis的服務端(gdb)
set args /etc/redis_6379.conf --設定gdb引數
(gdb) br readqueryfromclient --在該函式地方設定斷點
1180 nread = read(fd, c->querybuf+qblen, readlen); --從fd中讀取來自客戶端的查詢命令
(gdb) p c->querybuf
$5 = (sds) 0x7ffff1515008 "*3\r\n$3\r\nset\r\n$8\r\nuser1:id\r\n$3\r\n100\r\n"
redis的協議是以\r\n結束,那該函式獲取到的命令是什麼呢:
*3\r\n --該命令有3個命令 即:set user1:id 100 ,乙個3個引數
$3\r\nset\r\n set命令3個位元組
$8\r\nuser1:id\r\n ---user1:id的長度是8個位元組
$3\r\n100\r\n" --100的長度為3個位元組
所以reids的命令的基本格式為 引數個數 引數1長度 引數1值 引數2長度 引數2值 引數3長度 引數3值
thread 1 (thread 0x7ffff7fef720 (lwp 39512)):
#0 readqueryfromclient (el=0x7ffff14a9150, fd=10, privdata=0x7ffff1510000, mask=1) at networking.c:1181
#1 0x000000000041b799 in aeprocessevents (eventloop=0x7ffff14a9150, flags=3) at ae.c:412
#2 0x000000000041b92e in aemain (eventloop=0x7ffff14a9150) at ae.c:455
#3 0x00000000004275e9 in main (argc=2, argv=0x7fffffffe548) at redis.c:3706
bt以後的執行緒可以看到執行緒掛起的痕跡:man->aemain->aeprocessevents
redis簡單介紹
多次查詢讓你懷疑人生 冗餘欄位過多會讓你看起來很傻 為啥不試試redis 大大減少了查詢數量,提高了效率 redis的api更加人性化,再也不需要構建sql語句,節省了sql的解析時間 redis 是完全開源免費的,遵守bsd協議,是乙個高效能的key value資料庫。redis 與其他 key ...
redis簡單介紹
特點 速度快,多種資料結構,簡單穩定,客戶端支援語言多,持久化,主從,高可用和分布式 速度快 基於鍵值對的nosql資料庫,將資料都放入記憶體中,使用c語言,單執行緒架構 資料結構 字串,雜湊,列表,集合,有序集合 鍵過期功能,實現快取,簡單穩定不依賴作業系統中的類庫,使用單執行緒 持久化 rdb和...
redis 簡單介紹
了解redis的資料結構有助於了解每種資料結構的優劣勢,方便設計合理的cache結構。1.string 可以儲存字串 浮點型 整型,如果是字串可以執行字串操作,如果是浮點型 整型也可以執行加減操作。redis會識別出它的具體型別。2.list 鍊錶,鍊錶中的每個node包含乙個字串。可以對鍊錶進行兩...