{"id":27807266,"url":"https://github.com/microwww/redis-mock","last_synced_at":"2026-01-14T02:18:30.617Z","repository":{"id":46126501,"uuid":"257516452","full_name":"microwww/redis-mock","owner":"microwww","description":"redis server for java, java redis mock","archived":false,"fork":false,"pushed_at":"2025-06-04T08:01:34.000Z","size":494,"stargazers_count":52,"open_issues_count":2,"forks_count":22,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-04T22:05:50.088Z","etag":null,"topics":["java","mock-redis","redis","redis-mock"],"latest_commit_sha":null,"homepage":"https://github.com/microwww/jedis-mock","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/microwww.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-04-21T07:37:54.000Z","updated_at":"2025-06-04T08:01:36.000Z","dependencies_parsed_at":"2023-12-13T06:29:37.690Z","dependency_job_id":"b7148f14-e5f0-44a7-8c76-3c4db4287abe","html_url":"https://github.com/microwww/redis-mock","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/microwww/redis-mock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microwww%2Fredis-mock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microwww%2Fredis-mock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microwww%2Fredis-mock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microwww%2Fredis-mock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/microwww","download_url":"https://codeload.github.com/microwww/redis-mock/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/microwww%2Fredis-mock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","mock-redis","redis","redis-mock"],"created_at":"2025-05-01T10:01:23.033Z","updated_at":"2026-01-14T02:18:30.612Z","avatar_url":"https://github.com/microwww.png","language":"Java","funding_links":[],"categories":["测试"],"sub_categories":[],"readme":"# Redis-server [![Build status](https://ci.appveyor.com/api/projects/status/fu71vlj9n9bixadg/branch/dev?svg=true)](https://ci.appveyor.com/project/lichangshu/redis-mock)\nPure Java implementation redis-server. Embedded redis service when unit testing. You no longer need to Mock redis apis.\n\n1. ~~Support redis api 2.8~~\n2. ~~jedis-3.0+ api is changed, so you must update it to 0.1.0-3.0 if you are using the latest api~~\n3. version 0.2.0 remove jedis dependence, There is no need for any external dependencies.\n4. version 0.2.2 support `PubSubOperation` \n5. version 0.2.3 ChannelInputStream to `ByteBuffer`, it is non blocking.\n6. support RESP-3, to connect by `HELLO`, from release 0.3.0\n7. support HyperLogLog from \u003c0.3.1+\u003e\n8. support Lua-script from \u003c0.3.3+\u003e\n\n## maven dependency\n\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.microwww\u003c/groupId\u003e\n    \u003cartifactId\u003eredis-server\u003c/artifactId\u003e\n    \u003cversion\u003e0.3.3\u003c/version\u003e\n    \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n## Using\n```\n    RedisServer server = new RedisServer();\n    server.listener(\"127.0.0.1\", 6379); // Redis runs in the background\n    InetSocketAddress address = (InetSocketAddress) server.getServerSocket().getLocalSocketAddress();\n    logger.info(\"Redis start :: [{}:{}]\", address.getHostName(), address.getPort());\n```\n\u003e You can set port to 0, server will bind at **random port**, you can get it by `server.getLocalSocketAddress`\n\nif you are using spring boot, you can start like this :\n```\n    @Bean\n    public RedisServer mockRedisServer(RedisProperties redisProperties) throws IOException {\n        RedisServer server = new RedisServer();\n        server.listener(redisProperties.getHost(), redisProperties.getPort());\n        InetSocketAddress address = (InetSocketAddress) server.getServerSocket().getLocalSocketAddress();\n        logger.info(\"Mocker Redis start :: [{}:{}], set 'server.redis.host' to match it\", address.getHostName(), address.getPort());\n        return server;\n    }\n\n```\nserver will run with spring config : `spring.redis.host`, `spring.redis.port`\n\nA better option is to add dependencies:\n```\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.microwww\u003c/groupId\u003e\n    \u003cartifactId\u003emocker-redis-spring-boot-starter\u003c/artifactId\u003e\n    \u003cversion\u003e5.3.3\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Supported commands\nSupported redis commands :\n\nConnectionOperation\n\u003e  AUTH, ECHO, PING, QUIT, SELECT, HELLO\u003c0.3.0+\u003e,\n\nHashOperation\n\u003e  HDEL, HEXISTS, HGET, HGETALL, HINCRBY, HINCRBYFLOAT, HKEYS, HLEN, HMGET, HMSET, HSCAN, HSET, HSETNX, HVALS, \n\nHyperLogLog `\u003c0.3.1+\u003e`\n\u003e  PFADD, PFCOUNT, PFMERGE, \n\nKeyOperation\n\u003e  DEL, EXISTS, EXPIRE, EXPIREAT, KEYS, MOVE, PERSIST, PEXPIRE, PEXPIREAT, PTTL, RANDOMKEY, RENAME, RENAMENX, SCAN, SORT, TTL, TYPE, UNLINK\u003c4.0.0+\u003e,\n\nListOperation\n\u003e  BLPOP, BRPOP, LINDEX, LINSERT, LLEN, LPOP, LPUSH, LPUSHX, LRANGE, LREM, LSET, LTRIM, RPOP, RPOPLPUSH, RPUSH, RPUSHX, \n\nPubSubOperation `\u003c0.2.2+\u003e`\n\u003e  PSUBSCRIBE, PUBLISH, PUBSUB, PUNSUBSCRIBE, SUBSCRIBE, UNSUBSCRIBE, \n\nScriptOperation `\u003c0.3.3+\u003e`\n\u003e  EVAL, EVALSHA, SCRIPT EXISTS, SCRIPT FLUSH, SCRIPT KILL, SCRIPT LOAD,\n\nServerOperation\n\u003e  DBSIZE, FLUSHALL\u003cASYNC, 4.0.0+\u003e, FLUSHDB\u003cASYNC, 4.0.0+\u003e, TIME, 0.0.2+, CLIENT GETNAME, CLIENT KILL, CLIENT LIST, CLIENT SETNAME,\n\nSetOperation\n\u003e  SADD, SCARD, SDIFF, SDIFFSTORE, SINTER, SINTERSTORE, SISMEMBER, SMEMBERS, SMOVE, SPOP, SRANDMEMBER, SREM, SSCAN, SUNION, SUNIONSTORE, \n\nSortedSetOperation\n\u003e  ZADD, ZCARD, ZCOUNT, ZINCRBY, ZINTERSTORE, ZRANGE, ZRANGEBYSCORE, ZRANK, ZREM, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZREVRANGE, ZREVRANGEBYSCORE, ZREVRANK, ZSCAN, ZSCORE, ZUNIONSTORE, \n\nStringOperation\n\u003e  APPEND, BITCOUNT, BITOP, DECR, DECRBY, GET, GETBIT, GETRANGE, GETSET, INCR, INCRBY, INCRBYFLOAT, MGET, MSET, MSETNX, PSETEX, SET, SETBIT, SETEX, SETNX, SETRANGE, STRLEN, \n\nTransactionOperation\n\u003e 0.0.2+, DISCARD, EXEC, MULTI, UNWATCH, WATCH\n\n## Unsupported \nIf you find unsupported operation, you can add it by yourself, you must `implements AbstractOperation` add it to server :\n\u003e `server.configScheme(16, new YourOperation1(), ...)` \n\nYou can add a method, Method signature like this:\n `public void name(RedisRequest request) throws IOException`\nMethod name is same as your command, and Method names are all lowercase.\n\nIn `RedisRequest` , you can get RedisServer -\u003e Scheme -\u003e database and so on !\n\nYou can create an issue also, I will add it as much as I can.\n\nGood luck !\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrowww%2Fredis-mock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicrowww%2Fredis-mock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicrowww%2Fredis-mock/lists"}