# redis-server
**Repository Path**: xiandafu/redis-server
## Basic Information
- **Project Name**: redis-server
- **Description**: 用来单元测试,模拟redis-server,代码参考https://github.com/microwww/redis-mock,考虑到使用,先复制了一份,之后会PR给microwww/redis-mock
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-10-10
- **Last Updated**: 2022-11-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# redis-server
## 介绍
用来单元测试,模拟redis-server,代码参考https://github.com/microwww/redis-mock,考虑到使用,先复制了一份,之后会PR给microwww/redis-mock
安装
```xml
com.ibeetl
redis-server
0.1.0
```
示例
```
public class RedisServerTest {
RedisServer server;
@Before
public void init() throws IOException {
server = new RedisServer();
server.listener("localhost",9999);
}
@After
public void close() throws IOException {
server.close();
}
@Test
public void testPing2() throws IOException {
JedisCluster jedis = connection();
jedis.set("abc","efg");
String value = jedis.get("abc");
Assert.assertEquals("efg",value);
}
protected JedisCluster connection() throws IOException {
InetSocketAddress address = (InetSocketAddress)server.getServerSocket().getLocalSocketAddress();
Set hostAndPortsSet = new HashSet();
// 添加节点
hostAndPortsSet.add(new HostAndPort(address.getHostName(), address.getPort()));
// Jedis连接池配置
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//最小空闲连接数, 默认0
jedisPoolConfig.setMinIdle(0);
// 获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
jedisPoolConfig.setMaxWaitMillis(200000); // 设置2秒
//对拿到的connection进行validateObject校验
jedisPoolConfig.setTestOnBorrow(true);
JedisCluster jedis = new JedisCluster(hostAndPortsSet,jedisPoolConfig);
return jedis;
}
}
```
# 支持的命令
## Cluster
CLUSTER SLOTS
## ConnectionOperation
AUTH, ECHO, PING, QUIT, SELECT,
## HashOperation
HDEL, HEXISTS, HGET, HGETALL, HINCRBY, HINCRBYFLOAT, HKEYS, HLEN, HMGET, HMSET, HSCAN, HSET, HSETNX, HVALS,
## KeyOperation
DEL, EXISTS, EXPIRE, EXPIREAT, KEYS, MOVE, PERSIST, PEXPIRE, PEXPIREAT, PTTL, RANDOMKEY, RENAME, RENAMENX, SCAN, SORT, TTL, TYPE, UNLINK<4.0.0+>,
## ListOperation
BLPOP, BRPOP, LINDEX, LINSERT, LLEN, LPOP, LPUSH, LPUSHX, LRANGE, LREM, LSET, LTRIM, RPOP, RPOPLPUSH, RPUSH, RPUSHX,
## ServerOperation
DBSIZE, FLUSHALL, FLUSHDB, TIME, 0.0.2+, CLIENT GETNAME, CLIENT KILL, CLIENT LIST, CLIENT SETNAME,
## SetOperation
SADD, SCARD, SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SISMEMBER, SMEMBERS, SMOVE, SPOP, SRANDMEMBER, SREM, SSCAN, SUNION, SUNIONSTORE,
## SortedSetOperation
ZADD, ZCARD, ZCOUNT, ZINCRBY, ZINTERSTORE, ZRANGE, ZRANGEBYSCORE, ZRANK, ZREM, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZREVRANGE, ZREVRANGEBYSCORE, ZREVRANK, ZSCAN, ZSCORE, ZUNIONSTORE,
## StringOperation
APPEND, BITCOUNT, BITOP, DECR, DECRBY, GET, GETBIT, GETRANGE, GETSET, INCR, INCRBY, INCRBYFLOAT, MGET, MSET, MSETNX, PSETEX, SET, SETBIT, SETEX, SETNX, SETRANGE, STRLEN,
## TransactionOperation
0.0.2+, DISCARD, EXEC, MULTI, UNWATCH, WATCH
## 自定义
如果发现有不支持得Redis命令,可以自己添加
server.configScheme(16, new YourOperation1(), ...)
实现redis协议 https://www.redis.com.cn/topics/protocol.html