数据存储
基础概念
用途
数据缓存服务主要用于高并发,低延迟的简单数据写入读取,性能好,响应时间短,但是只支持类Key-Value方式的写入读取,当前支持 String(字符串), HashMap(哈希表), List(列表), Set(集合) 四种数据结构。具体数据结构的含义,可以参考redis。
术语
| 名字 |
中文描述 |
语义 |
| String |
字符串 |
字符串 |
| HashMap |
哈希表 |
哈希表 |
| List |
列表 |
列表 |
| Set |
集合 |
集合 |
| Key |
Key |
唯一表示一个String, HashMap, List, Set |
| Value |
Value |
值,一般为字符串 |
| field |
域 |
hash表中的key |
接口
| 名字 |
描述 |
支持数据结构 |
| del |
删除一个或多个key |
String, HashMap, List, Set |
| exists |
检查key是否存在 |
String, HashMap, List, Set |
| expire |
设置key过期时间 |
String, HashMap, List, Set |
| persist |
移除key的过期时间 |
String, HashMap, List, Set |
| ttl |
查看Key的剩余过期时间 |
String, HashMap, List, Set |
| type |
查看key的存储类型 |
String, HashMap, List, Set |
| 名字 |
描述 |
| get |
获取key所关联的字符串的值 |
| mGet |
获取多个key的值 |
| set |
设置value |
| mSet |
同时设置一个或多个 key-value 对 |
| setEx |
将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位) |
| setNx |
key不存在时,将key的值设置为value |
| getSet |
将给定 key 的值设为 value ,并返回 key 的旧值 |
| incr |
加1 |
| incrBy |
加N |
| incrByFloat |
加一个符点数 |
| decr |
减1 |
| decrBy |
减N |
| append |
字符串追加 |
| strlen |
字符串的长度 |
| 名字 |
描述 |
| hGet |
返回哈希表 key 中给定域 field 的值 |
| hMGet |
返回哈希表 key 中,一个或多个给定域的值 |
| hSet |
将哈希表 key 中的域 field 的值设为 value |
| hMSet |
同时将多个 field-value (域-值)对设置到哈希表 key 中 |
| hSetNx |
将哈希表 key 中的域 field 的值设为 value, 如果field已存在,不执行 |
| hGetAll |
返回哈希表 key 中,所有的域和值 |
| hDel |
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略 |
| hExists |
查看哈希表 key 中,给定域 field 是否存在 |
| hIncrBy |
为哈希表 key 中的域 field 的值加上增量 increment |
| hIncrByFloat |
为 key 中所储存的值加上浮点数增量 increment |
| hKeys |
返回哈希表 key 中的所有域 |
| hVals |
返回哈希表 key 中所有域的值 |
| hLen |
哈希表 key 中域的数量 |
| hStrlen |
返回哈希表 key 中, 与给定域 field 相关联的值的字符串长度 |
| 名字 |
描述 |
| lIndex |
返回列表 key 中,下标为 index 的元素 |
| lInsertBefore |
将值 value 插入到列表 key 当中,位于值 pivot 之前 |
| lInsertAfter |
将值 value 插入到列表 key 当中,位于值 pivot 之后 |
| lLen |
返回列表 key 的长度 |
| lPush |
将一个或多个值 value 插入到列表 key 的表头 |
| lPushX |
仅当 key 存在并且是一个列表时, 将值 value 插入到列表 key 的表头 |
| rPush |
将一个或多个值 value 插入到列表 key 的表尾 |
| rPushX |
仅当 key 存在并且是一个列表时, 将值 value 插入到列表 key 的表尾 |
| lPop |
移除并返回列表 key 的头元素 |
| rPop |
移除并返回列表 key 的尾元素 |
| lSet |
将列表 key 下标为 index 的元素的值设置为 value |
| rRem |
根据参数 count 的值,移除列表中与参数 value 相等的元素。 |
| 名字 |
描述 |
| sAdd |
将一个或多个 member 元素加入到集合 key 当中 |
| sCard |
集合中的元素数量 |
| sIsMember |
判断 member 元素是否集合 key 的成员 |
| sMembers |
返回集合 key 中的所有成员 |
| sPop |
移除并返回集合中的一个随机元素 |
| sRandMember |
返回集合中的一个随机元素 |
| sRem |
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略 |
使用实例
String实例
String uid = "1";
String name = "allen";
ac.cache().set(uid, name);
String uid="1";
String name = ac.cache().get(uid);
if (name == null) {
System.out.println("user is not exist");
} else {
System.out.println("user is " + name);
}
HashMap实例
String uid = "1";
ACObject kvs = new ACObject();
kvs.put("name", "allen");
kvs.put("age", "18");
kvs.put("sex", "man");
ac.cache.hMSet(uid, kvs);
String uid = "1";
String name = ac.cache().hGet(uid);
if (name == null) {
System.out.println("user is not exist");
} else {
System.out.println("user name is " + name);
}
List实例
- 记录用户id=1的最近一次登录时间timestamp
String uid = "1";
String timestamp = "2018-04-01 15:04:05";
long length = ac.cache.lPush(uid, timestamp);
Set实例
String group = "group1";
String uid = "1";
long length = ac.cache.sAdd(group, uid);
String group = "group1";
String uid = "1";
boolean isMember = ac.cache.sIsMember(group, uid);