基本数据类型
基本特点
结构类型 | 结构存储的值 | 结构的读写能力 |
---|---|---|
String字符串 | 可以是字符串、整数或浮点数 | 对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作; |
List列表 | 一个链表,链表上的每个节点都包含一个字符串 | 对链表的两端进行push和pop操作,读取单个或多个元素;根据值查找或删除元素; |
Set集合 | 包含字符串的无序集合 | 字符串的集合,包含基础的方法有看是否存在添加、获取、删除;还包含计算交集、并集、差集等 |
Hash散列 | 包含键值对的无序散列表 | 包含方法有添加、获取、删除单个元素 |
Zset有序集合 | 和散列(Hash)一样,用于存储键值对 | 字符串成员与浮点数分数之间的有序映射;元素的排列顺序由分数的大小决定;包含方法有添加、获取、删除单个元素以及根据分值范围或成员来获取元素 |
HyperLogLogs基数统计 | 用来做基数统计,基数即在一个数据集中不重复的元素的个数叫基数 | |
Bitmaps 位图 | 一个以位(bit)为单位的数组, 数组的每个单元只能存储0和1 | |
Geospatial 地理位置 | 存储地理位置,即经纬度 |
常用操作
String字符串
操作 | 解释 | 注意事项 |
---|---|---|
set <key> <value> | 添加键值对 | |
get <key> | 查询对应键值 | |
append <key> <value> | 将给定的<value> 追加到原值的末尾 | 注意int类型 |
strlen <key> | 获得值的长度 | |
setnx <key> <value> | 只有在 key 不存在时, 设置 key 的值 | |
incr <key> | 将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1 | ****原子****操作 |
decr <key> | 将 key 中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1 | ****原子****操作 |
incrby / decrby <key> <步长> | 将 key 中储存的数字值增减。自定义步长 | |
mset <key1> <value1> <key2> <value2> … | 同时设置一个或多个 key-value对 | *原子性,有一个失败则都失败* |
mget <key1> <key2> <key3> … | 同时获取一个或多个 value | *原子性,有一个失败则都失败* |
msetnx <key1> <value1> <key2> <value2> … | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 | *原子性,有一个失败则都失败* |
getrange <key> <起始位置><结束位置> | 获得值的范围,类似java中的substring,前包,后包 | |
setrange <key><起始位置><value> | 用 <value> 覆写<key>所储存的字符串值,从<起始位置>开始(索引从0开始)。 | |
setex <key> <过期时间> <value> | 设置键值的同时,设置过期时间,单位秒。 | |
getset <key> <value> | 以新换旧,设置了新值同时获得旧值。 |
List列表
操作 | 解释 | 注意事项 |
---|---|---|
lpush/rpush <key><value1><value2><value3> … | 从左边/右边插入一个或多个值。 | |
lpop/rpop <key> | 从左边/右边吐出一个值。值在键在,值光键亡。 | |
rpoplpush <key1><key2> | 从<key1>列表右边吐出一个值,插到<key2>列表左边。 | |
lrange <key><start><stop> | 按照索引下标获得元素(从左到右) | |
lrange mylist 0 -1 | 0左边第一个,-1右边第一个,(0-1表示获取所有) | |
lindex <key><index> | 按照索引下标获得元素(从左到右) | |
llen <key> | 获得列表长度 | |
linsert <key> before <value><newvalue> | 在<value>的后面插入<newvalue>插入值 | |
lrem <key><n><value> | 从左边删除n个value(从左到右) | |
lset<key><index><value> | 将列表key下标为index的值替换成value |
Set集合
操作 | 解释 | 注意事项 |
---|---|---|
sadd <key><value1><value2> … | 将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略 | |
smembers <key> | 取出该集合的所有值。 | |
sismember <key><value> | 判断集合<key>是否为含有该<value>值,有1,没有0 | |
scard<key> | 返回该集合的元素个数。 | |
srem <key><value1><value2> … | 删除集合中的某个元素。 | |
spop <key> | 随机从该集合中吐出一个值。 | |
srandmember <key><n>。 | 随机从该集合中取出n个值。不会从集合中删除 | |
smove <source><destination>value | 把集合中一个值从一个集合移动到另一个集合 | |
sinter <key1><key2> | 返回两个集合的交集元素。 | |
sunion <key1><key2> | 返回两个集合的并集元素。 | |
sdiff <key1><key2> | 返回两个集合的差集元素(key1中的,不包含key2中的) |
Zset有序集合
操作 | 解释 | 注意事项 |
---|---|---|
zadd <key><score1><value1><score2><value2>… | 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。 | |
zrange <key><start><stop> [WITHSCORES] | 返回有序集 key 中,下标在<start><stop>之间的元素带WITHSCORES,可以让分数一起和值返回到结果集。 | |
zrangebyscore key minmax [withscores] [limit offset count] | 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。 | |
zrevrangebyscore key maxmin [withscores] [limit offset count] | 同上,改为从大到小排列。 | |
zincrby <key><increment><value> | 为元素的score加上增量 | |
zrem <key><value> | 删除该集合下,指定值的元素 | |
zcount <key><min><max> | 统计该集合,分数区间内的元素个数 | |
zrank <key><value> | 返回该值在集合中的排名,从0开始。 |
Hash哈希
操作 | 解释 | 注意事项 |
---|---|---|
hset <key><field><value> | 给<key>集合中的 <field>键赋值<value> | |
hget <key1><field> | 从<key1>集合<field>取出 value | |
hmset <key1><field1><value1><field2><value2>… | 批量设置hash的值 | |
hexists<key1><field> | 查看哈希表 key 中,给定域 field 是否存在。 | |
hkeys <key> | 列出该hash集合的所有field | |
hvals <key> | 列出该hash集合的所有value | |
hincrby <key><field><increment> | 为哈希表 key 中的域 field 的值加上增量 1 -1 | |
hsetnx <key><field><value> | 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 . |
Bitmap位图
操作 | 解释 | 注意事项 |
---|---|---|
setbit<key><offset><value> | 设置Bitmaps中某个偏移量的值(0或1) | |
getbit<key><offset> | 获取Bitmaps中某个偏移量的值 | |
bitcount<key>[start end] | 统计字符串从start字节到end字节比特值为1的数量 | |
bitop and(or/not/xor) <destkey> [key…] | bitop是一个复合操作, 它可以做多个Bitmaps的and(交集) 、 or(并集) 、 not(非) 、 xor(异或) 操作并将结果保存在destkey中。 |
HyperLogLog基数统计
操作 | 解释 | 注意事项 |
---|---|---|
pfadd <key>< element> [element …] | 添加指定元素到 HyperLogLog 中 | |
pfcount<key> [key …] | 计算HLL的近似基数 | |
pfmerge<destkey><sourcekey> [sourcekey …] | 将一个或多个HLL合并后的结果存储在另一个HLL中 |
Geospatial地理位置
操作 | 解释 | 注意事项 |
---|---|---|
geoadd<key>< longitude><latitude><member> [longitude latitude member…] | 添加地理位置(经度,纬度,名称) | |
geopos <key><member> [member…] | 获得指定地区的坐标值 | |
geodist<key><member1><member2> [m|km|ft|mi ] | 获取两个位置之间的直线距离 | m 表示单位为米[默认值]。km 表示单位为千米。mi 表示单位为英里。ft 表示单位为英尺。 |
georadius<key>< longitude><latitude>radius m |km |ft |mi | 以给定的经纬度为中心,找出某一半径内的元素 |
–TODO待优化