项目实战-基于redis的内存数据库Medis(附源代码以及测试用例)

本文介绍了Medis项目,这是一个模仿Redis缓存模型的服务器端实现,支持hash和list两种数据类型。内容包括Redis简介、主要操作、项目部署、框架设计、代码实现、测试及结果。Medis实现了lpush、lrange、hset和hget命令,性能约为Redis的一半。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1 项目介绍

1.1 redis 简介

1.2 redis 中的主要操作介绍

2 项目整体部署

3 框架思路

4 项目代码

5 项目测试

6 测试结果


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值