目录
1 项目介绍
该项目是通过仿照redis的缓存模型,只支持hash、list两种数据类型,单线程版本实现的服务器端。主要流程是:与客户端建立Socket连接后,将二进制字节流通过协议的解析,反序列化获取输入的对象流,通过自定义协议解析类解析出相应的命令,编程实现lpush、lrange、hset、hget命令
自定义协议类Protocol类主要参考了Jedis,链接:https://github.com/xetorthio/jedis/blob/master/src/main/java/redis/clients/jedis/Protocol.java
1.1 redis 简介
redis官网是这样介绍的:Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster. 它的存储方式是基于键值对的形式,key 是 string 类型,value 支持的数据类型有 strings, hashes, lists, sets, sorted sets,是非关系型数据库(nosql),并且支持持久化存储,说到这我们不得不提起 Memcached -- 同样也是键值对存储形式,但 Memcached 的 value 只支持 string,这在很大程度上有局限性,而 redis 就很好的解决了数据类型单一的问题。
1.2 redis 中的主要操作介绍
LPUSH key value [value...]
介绍(摘自官网):
Available since 1.0.0.
Time complexity: O(1)
Insert all the specified values at the head of the list