数据存储
基础概念
用途
数据缓存服务主要用于高并发,低延迟的简单数据写入读取,性能好,响应时间短,但是只支持类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);