跳到主要内容

3 篇博文 含有标签「Redis」

查看所有标签

基于Netty实现简单的Redis服务端

· 阅读需 8 分钟

前言

在上一篇的基于Netty实现简单的Redis客户端 - 木然轩 - 文剑木然的网络日志中我介绍了如何使用Netty来编写一个简单的Redis客户端。在本篇中,将使用Netty实现一个简单的Redis服务端。

目标

完整的Redis服务端的功能是很复杂的,由于是学习目的,这里只实现Redis最基本的一项功能,就是存取字符串,也就是下面的两个命令:

SET key value
GET key

实现

由于Redis的协议在上一篇已经提过了,本篇就不再赘述了,直接上实现的过程。

基于Netty实现简单的Redis客户端

· 阅读需 9 分钟

前言

Netty是Java中非常常用的网络库,它能自定义网络通信协议,从而实现非常丰富多样的网络功能。Redis是开发中非常常用的中间件,常用于缓存、分布式锁等场合,Redis的协议也非常简单。尽管Netty中自带了Redis的客户端,但是,为了学习,我们将不使用Netty自带的实现,而是自己动手写一个基础版本的Redis客户端。

目标

Redis支持字符串、列表、集合等数据类型,考虑到是学习目的,只实现最最基础的功能,也就是设置与获取字符串的值。具体来说,就是下面两个命令:

# 设置指定key的值
SET key value
# 获取指定key的值
GET key

协议

了解Redis协议

可以从 Redis协议详细规范 来了解Redis的协议。Redis的协议是基于字符串的而不是二进制的,这为协议的处理带来了许多便利。

【实验楼】Redis基础教程——学习笔记

· 阅读需 4 分钟

Redis数据类型

字符串

设置值:set key value 获取值:get key 没有相同key时才设置值:set key newval nx 拥有相同key时才设置值:set key newval xx

增加1:incr key 增加x:incrby key x

同时设置多个值:mset key1 value1 key2 value2 同时获取多个值:mget key1 key2

列表

PUSH: lpush 插入新元素到头部;rpush 插入新元素到尾部(一次可以push多个元素) POP: lpop 删除头部元素;rpop 删除尾部元素