{"id":37026993,"url":"https://github.com/lamp-china/ledis","last_synced_at":"2026-01-14T03:11:27.784Z","repository":{"id":57733899,"uuid":"91041925","full_name":"lamp-china/ledis","owner":"lamp-china","description":"java实现的redis客服端。它优雅，简单，安全，性能好。","archived":false,"fork":false,"pushed_at":"2017-08-01T07:03:58.000Z","size":135,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2023-07-04T04:34:44.826Z","etag":null,"topics":["java","lamp","redis-client"],"latest_commit_sha":null,"homepage":"","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/lamp-china.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}},"created_at":"2017-05-12T02:18:23.000Z","updated_at":"2022-12-13T07:28:00.000Z","dependencies_parsed_at":"2022-08-24T11:20:26.090Z","dependency_job_id":null,"html_url":"https://github.com/lamp-china/ledis","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/lamp-china/ledis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamp-china%2Fledis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamp-china%2Fledis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamp-china%2Fledis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamp-china%2Fledis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lamp-china","download_url":"https://codeload.github.com/lamp-china/ledis/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lamp-china%2Fledis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408815,"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","lamp","redis-client"],"created_at":"2026-01-14T03:11:27.186Z","updated_at":"2026-01-14T03:11:27.773Z","avatar_url":"https://github.com/lamp-china.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 欢迎大家，来到lamp小组的ledis项目\n\n## lamp介绍\n\n## ledis介绍\n### ledis注重点是redis命令与对象之间的映射。\n### 解决命令，结果与对象之间复杂操作目的。\n### 使操作更加简单，代码更加优雅，结构更加清晰\n### 与其他框架贴近\n##  ledis所有操作都是线程安全的。 所以在这方面ledis更加健壮，更加方便\n```\n    Jedis jedis;\n    try{\n        jedis = new Jedis();\n        jedis.get( 1 );\n    }fallay{\n        jedis.clone();\n    }\n```\n### ledis\n```\n;\n    OperationEntity operationEntity = new OperationEntity();\n    operationEntity.setKey(\"id\");\n    operationEntity.setClass(User.class);\n    StringCommands stringCommands = CommandsObjectFactory.getInstance.getRedisCommands(operationEntity);\n    \n    stringCommands.set( 1 );//线程安全\n    \n```\n### 1. 解决命令参数传递复杂性，基于对象传递\n### jedis，\n```java\n;\n    User user = new User();\n    user.setId( 1 );\n    user.setName(\"ledis\");\n    jedis.set( user.getId().toString() , JSON.toString( user ));\n    \n```\n### spring-redis 更加复杂，这里不做演示\n### ledis\n```\n    ;\n    User user = new User();\n    user.setId( 1 );\n    user.setName(\"ledis\");\n    stringCommands.set( user );\n```\n\n### 2. 返回结果自动映射\n### jedis\n```\n;\n    User user = new User();\n    user.setId( 1 );\n    user.setName(\"ledis\");\n    String str = jedis.get( user.getId().toString());\n    user = JSON.parseObject( str , User.class )    \n    \n```\n### ledis\n```\n;\n    User user = new User();\n    user.setId( 1 );\n    user.setName(\"ledis\");\n    user = stringCommands.get(user);\n```\n\n### 3. 支持 List 批量操作, \n### jedis\n```\n    List\u003cUser\u003e userList = new ArrayList\u003c\u003e();\n    for(User user : userList){\n         jedis.set( user.getId().toString() , JSON.toString( user ));\n    }\n```\n### ledis\n```\n    List\u003cUser\u003e userList = new ArrayList\u003c\u003e();\n    stringCommands.set( userList );\n```\n### 4. 支持 key前缀与分隔符。同样的id，可能会保存不同的其他对象数据。然后你需要在命令操作的时候进行 key的组装。ledis只需要你配置就可以。修改key组合十分方便。\n### jedis\n```\n     User user = new User();\n    user.setId( 1 );\n    user.setName(\"ledis\");\n    jedis.set( \"user\"+\"_\"+user.getId().toString() , JSON.toString( user ));\n```\n### ledis\n```\n    OperationEntity operationEntity = new OperationEntity();\n    operationEntity.setKey(\"id\");\n    operationEntity.setClass(User.class);\n    operationEntity.setPrefix(\"user\");\n    operationEntity.setSeparator(\"_\");\n    StringCommands stringCommands = CommandsObjectFactory.getInstance.getRedisCommands(operationEntity);\n    \n    User user = new User();\n    user.setId( 1 );\n    user.setName(\"ledis\");\n    stringCommands.set( user );\n```\n### 5. 方便的script操作（设计完成，等待实现）\n### 6. 完整 Object Relational Mapping（初步方案带完善）\n### 7. 基于注解操作\n```\n    @Mapper\n@OperationList( operationsObject = {\n\t\t@OperationsObject( name = \"test\" , operations = @Operation( key = \"id\" , mapKey = \"appId\" ) ) } )\npublic class TestEntity {\n    \n}\n```\n### 8. 努力与其他框架整合\n#### spring （完成）\n#### spring-boot （等待）\n#### shiro（等待）\n### 9. 多源操作\n### 10. 高性能。除了序列化操作之外。ledis，使用缓存，重用对象（一个命令，几乎没有任何的对象创建）等等\n### 11. 对response outputStream（待设计）\n\n## ledis 的不足\n### 1. 因为加入对象操作，又保持原声的string类型 key。为了方便与性能加入 long类型 key。\n### a. Ledis 对 long类型进行优化操作，\n### b. 致使一些命名就有 三个方法。方法过多。\n```\n;\n    T get(T t);\n    T get(String t);\n    T get(long t);\n```\n### c. 致使接口过多\n### d. 现在考虑是否 不支持long类型key\n### c. long,int,Integer,long 之间兼容问题，真烦。\n### d. 是否创建一个新的体系。方法的出现\n### 2. 异常体系不够健全\n### 3. 现在无日志体系。想借鉴durid的日志体系。实现一套。\n### 4. 一些命令无法很好的支持。命令支持待完善中\n### 5. 对获得操作的类型过于单一，目前打算使用 T\u003cT\u003e, 的方式进行处理。由Ledis自动识别返回数据类型\n### 5. 只实现jdk8以上下单注解方式，以后会实现jdk8的注释方式\n\n\n### 关于Ladis，\n#### 使用 Apache Licence 2.0，出名之后，希望捐赠给apache。\n#### 目前由老胡用业余时间开发与维护，可以保证库的质量与进度。\n### Ladis 时刻表\n#### 1.0以下的版本号，是无bug，非健全版本，有bug会立马修护。尽量在四个月左右Ladis健全，稳定，功能齐全。\n#### 四个月以后，内部代码会进行一次重构，性能优化。尽量保证使用方式与接口向前兼容\n#### 发布一年左右，进入稳定期。只进行日常维护。功能与版本号将会同redis功能与版本号看齐。\n###  \n\n###  下面任务完成，ledis。基本不进行功能开发\n###  命令的支持\n命令类型 | 设计 |实现|时间| 实现者\n---|---|---|---|---\nkey          | 完成   | 完成     |     | 老胡   |\nstring       | 完成   | 完成     |     | 老胡   |\nhash         | 完成   | 完成     |     | 老胡   |\nlist         | 完成   | 完成     |     | 老胡   |\nset          | 完成   | 完成     |     | 老胡   |\nsortset      | 完成   | 完成     |     | 老胡   |\nbitmaps      | 未开始 | 未开始   |     |     |\ngeo          | 未开始 | 未开始   |     |     |\npubsub       | 完成   | 基本完成   |     |  慧慧   |\nscripting    | 完成   | 基本完成   |     | 慧慧    |\nserver       | 完成   | 基本完成   |     | 慧慧    |\ntransactions | 未开始 | 未开始   |     |     |\nConnection   | 完成   | 未开始   |     | 老胡   |\ncluster      | 重要   | 未开始   |     | 老胡   |\n\n\n功能 | 设计 |实现|时间| 实现者 | 说明\n---|---|---|---|---|---\nSentinel | 未开始 | 未开始|||\ncluster  | 未开始 | 未开始|||\npipeline | 完成   | 未开始|||\n异常体系 | 未开始 | 未开始|||\n日志体系 | 未开始 | 未开始|||\n分片     | 完成   | 未开始|||\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamp-china%2Fledis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flamp-china%2Fledis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flamp-china%2Fledis/lists"}