@@ -16,21 +16,19 @@ middleware using golang.
1616Key Features:
1717
1818- Support string, list, hash, set, sorted set, bitmap
19- - Multi Database and ` SELECT ` command
19+ - Concurrent Core for better performance
2020- TTL
2121- Publish/Subscribe
2222- GEO
2323- AOF and AOF Rewrite
2424- RDB read and write
25- - MULTI Commands Transaction is Atomic and Isolated. If any errors are encountered during execution, godis will rollback
26- the executed commands
27- - Replication (experimental)
28- - Server-side Cluster which is transparent to client. You can connect to any node in the cluster to
29- access all data in the cluster.
25+ - Multi Database and ` SELECT ` command
26+ - Transaction is ** Atomic** and Isolated. If any errors are encountered during execution, godis will rollback the executed commands
27+ - Replication
28+ - Server-side Cluster which is transparent to client. You can connect to any node in the cluster to access all data in the cluster.
3029 - Use the raft algorithm to maintain cluster metadata. (experimental)
3130 - ` MSET ` , ` MSETNX ` , ` DEL ` , ` Rename ` , ` RenameNX ` command is supported and atomically executed in cluster mode, allow over multi node
3231 - ` MULTI ` Commands Transaction is supported within slot in cluster mode
33- - Concurrent Core, so you don't have to worry about your commands blocking the server too much.
3432
3533If you could read Chinese, you can find more details in [ My Blog] ( https://www.cnblogs.com/Finley/category/1598973.html ) .
3634
@@ -40,6 +38,9 @@ You can get runnable program in the releases of this repository, which supports
4038
4139``` bash
4240./godis-darwin
41+ ```
42+
43+ ``` bash
4344./godis-linux
4445```
4546
@@ -85,46 +86,34 @@ See: [commands.md](https://github.com/HDT3213/godis/blob/master/commands.md)
8586
8687Environment:
8788
88- Go version:1.17
89-
90- System: macOS Catalina 10.15.7
91-
92- CPU: 2.6GHz 6-Core Intel Core i7
93-
94- Memory: 16 GB 2667 MHz DDR4
89+ Go version:1.23
90+ System: MacOS Monterey 12.5 M2 Air
9591
9692Performance report by redis-benchmark:
9793
9894```
99- PING_INLINE: 87260.03 requests per second
100- PING_BULK: 89206.06 requests per second
101- SET: 85034.02 requests per second
102- GET: 87565.68 requests per second
103- INCR: 91157.70 requests per second
104- LPUSH: 90334.23 requests per second
105- RPUSH: 90334.23 requests per second
106- LPOP: 90334.23 requests per second
107- RPOP: 90415.91 requests per second
108- SADD: 90909.09 requests per second
109- HSET: 84104.29 requests per second
110- SPOP: 82918.74 requests per second
111- LPUSH (needed to benchmark LRANGE): 78247.26 requests per second
112- LRANGE_100 (first 100 elements): 26406.13 requests per second
113- LRANGE_300 (first 300 elements): 11307.10 requests per second
114- LRANGE_500 (first 450 elements): 7968.13 requests per second
115- LRANGE_600 (first 600 elements): 6092.73 requests per second
116- MSET (10 keys): 65487.89 requests per second
95+ PING_INLINE: 179211.45 requests per second, p50=1.031 msec
96+ PING_MBULK: 173611.12 requests per second, p50=1.071 msec
97+ SET: 158478.61 requests per second, p50=1.535 msec
98+ GET: 156985.86 requests per second, p50=1.127 msec
99+ INCR: 164473.69 requests per second, p50=1.063 msec
100+ LPUSH: 151285.92 requests per second, p50=1.079 msec
101+ RPUSH: 176678.45 requests per second, p50=1.023 msec
102+ LPOP: 177619.89 requests per second, p50=1.039 msec
103+ RPOP: 172413.80 requests per second, p50=1.039 msec
104+ SADD: 159489.64 requests per second, p50=1.047 msec
105+ HSET: 175131.36 requests per second, p50=1.031 msec
106+ SPOP: 170648.45 requests per second, p50=1.031 msec
107+ ZADD: 165289.25 requests per second, p50=1.039 msec
108+ ZPOPMIN: 185528.77 requests per second, p50=0.999 msec
109+ LPUSH (needed to benchmark LRANGE): 172117.05 requests per second, p50=1.055 msec
110+ LRANGE_100 (first 100 elements): 46511.62 requests per second, p50=4.063 msec
111+ LRANGE_300 (first 300 elements): 21217.91 requests per second, p50=9.311 msec
112+ LRANGE_500 (first 500 elements): 13331.56 requests per second, p50=14.407 msec
113+ LRANGE_600 (first 600 elements): 11153.25 requests per second, p50=17.007 msec
114+ MSET (10 keys): 88417.33 requests per second, p50=3.687 msec
117115```
118116
119- ## Todo List
120-
121- + [x] ` Multi ` Command
122- + [x] ` Watch ` Command and CAS support
123- + [ ] Stream support
124- + [x] RDB file loader
125- + [ ] Master-Slave mode
126- + [ ] Sentinel
127-
128117## Read My Code
129118
130119If you want to read my code in this repository, here is a simple guidance.
0 commit comments