本文主要对于Redis在java中常做与缓存数据库,因为其单线程存储的方式和在存储在内存中的读写速度而火,在处理高并发时游刃有余,下面就说下常用的集中数据类型的指令和方法
具体代码:
点击打开链接
String 类型
key : String 类型value :String类型
格式 : 方法名(指令格式)
set(set key value) | 向Redis中添加一条String类型的数据set设置相同的键时,后一个值会覆盖前面的值 |
get(get key) | 通过key键获取队形数据 |
setnx(setnx key value) | nx: 表示not exists的意思,如果key不存在就设置,如果存在就不进行设置 |
setrange(setrange key startIndex vlaue) | 表示把指定的key的值从开始索引开始 是value这个值进行替换 |
mset(mset key1 value1 key2 value2 ...) | 批量设置键值对 |
getset(getset key newValue) | 获取key的值然后设置新的值 |
getrange(getrange key startIndex endIndex) | 获取数最后一个值的索引为-1 |
mget(mget key1 key2 key3...) | 批量获取 |
incr(incr key) | 通过key是的对应的value数值+1value必须是数字型的字符串,例如: "100" |
incrby(incrby key num) | 指定增减的数量value必须是数字型的字符串,例如: "100" |
decr(decr key) | 通过key是的对应的value数值+1value必须是数字型的字符串,例如: "100" |
decrby(decrby key num) | 指定自增减的数量value必须是数字型的字符串,例如: "100" |
append(append key value) | 给指定的字符串追加value的值 |
strlen(strlen key) | 获取指定的key对应的值得长度 |
msetnx(msetnx key1 value1 key2 value2...) | 如果key已存在那么设置失败 |
List类型
list的数据结构是一个链表的结构list类似于Java中的List集合有序,元素可以重复
lpush(lpush key value1 value2 ...) | 往list集合中压入元素 |
linsert(linsert key before/after value newValue) | 在指定的元素前或者后插入元素 |
lset(lset key index newValue) | 设置指定下标的值 |
lrem(lrem key count value) | 删除count个于value相同的元素count>0从开始位置进行删除count<0从末尾开始删除,count=0删除所有的 |
ltrim(ltrim key startIndex endIndex) | 删除指定范围内以外的元素,保留指定范围内的元素 |
lpop(lpop key) | 从list的头部删除元素 |
lindex(lindex key index) | 返回指定索引处的元素 |
llen(llen key) | 返回列表的长度 |
rpush(rpush key value) | 从末尾压入元素 |
rpop(rpop key) | 从末尾删除元素 |
rpoplpush(rpoplpush key1 key2) | 从key1链表中弹出最后一个元素然后压入到key2链表中 |
Hash类型
hash特别适用于存储对象, 将一个对象存在hash中相对于存储在String可以节省更多的内存.
hset(hset key field value) | 给指定的key添加key-value元素 |
hget(hget key field) | 获取指定的key中filed字段的值 |
hsetnx(hsetnx key field value) | 如果key不存在进行插入 |
hexists(hexists key field) | 判断指定的key中是否存在field这个字段 |
hlen(hlen key) | 获取指定的key中字段的数量 |
hdel(hdel key field1 field2...) | 删除指定的key中的指定的字段的和对应的值 |
hincrby(hincrby key filed count) | 给指定的key的field的字段添加或者减去count这个值 |
hgetall(hgetall key) | 获取key中所有的键值对,返回的是一个键一个值 |
hkeys(hkeys key) | 获取指定的key中所有的字段 |
hmget(hmget key field1 field2...) | 获取指定的key中指定字段的值 |
hmset(hmset key field1 value1 field2 value2...) | 同时设置多个键值对数据 |
hvals(hvals key) | 获取指定的key中所有的value |
hincrbyfloat(hincrbyfloat key field value) | 给指定的字段添加浮点数的值 |
这些都是常用的3个数据类型主要的API,后续还会更新Set,SortedSet数据型的API,希望能帮助到你
Set(类似于Java中的Set)
无序 , 元素唯一
sadd(sadd key member1 member2...) | 添加元素 |
scard(scard key) | 获取成员的数量 |
sismember(sismember key member) | 判断是否存在member这个成员 |
smembers(smembers key) | 获取所有的成员 |
spop(spop key) | 随机弹出一个成员 |
srandmember(srandmember key [count]) | 随机获取一个或者多个成员 |
srem(srem key member1 member2 ....) | 移动一个成员到指定的set中 |
smove(smove source desition member) | 删除一个或者多个成员,如果成员不存在则忽略 |
sdiff(sdiff first-key key1 key2...) | 返回给定集合之间的差集。不存在的集合 key将视为空集 |
sdiffstore(sdiffstore destionset key1 key2 ....) | 把获取到的差集保存到目标set中 |
sinter(sinter key1 key2....) | 获取交集 |
sinterstore(sinterstore destionset key1 key2....) | 把获取到的交集存储到目标set中 |
sunion(sunion key1 key2...) | 获取并集 |
sunionstore(sunionstore destionset key1 key2...) | 把获取到的并集存储到目标set中 |
SortedSet(和Set类似但是可以排序)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
zadd(zadd key score1 member1 score2 member2...) | 添加成员 Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。 如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。 分数值可以是整数值或双精度浮点数。 如果有序集合 key不存在,则创建一个空的有序集并执行 ZADD操作。 当 key存在但不是有序集类型时,返回一个错误。 注意:在 Redis 2.4版本以前, ZADD 每次只能添加一个元素。 |
zcard(zcard key) | 计算元素个数 |
zincrby(zincrby key number member) | 给指定的member的分数添加或者减去number这个值 Redis Zincrby 命令对有序集合中指定成员的分数加上增量 increment 可以通过传递一个负数值 increment,让分数减去相应的值,比如 ZINCRBY key -5 member,就是让 member的 score 值减去 5 。 当 key不存在,或分数不是 key的成员时, ZINCRBY key increment member等同于 ZADD key increment member。 当 key不是有序集类型时,返回一个错误。 分数值可以是整数值或双精度浮点数。 |
zcount(zcount key min max) | 获取分数在min和max之间的成员和数量;默认是闭区间; 想不包含可以: (min (max |
zrange(zrange key start stop [WITHSCORES]) | 返回指定排名之间的成员(结果是分数由低到高) 排名以0开始 |
zrevrange(zrevrange key start stop [WITHSCORES]) | 返回指定排名之间的成员(结果是分数由高到低) |
zrangebyscore(zrangebyscore key min max [withscores] [limit offset count]) | 根据分数的范围获取成员(按照分数:从低到高) |
zrevrangebyscore(zrevrangebyscore key max min [withscores] [limit offset count]) | 根据分数的范围获取成员(从高到低) |
zrank(zrank key member) | 返回一个成员的排名(从低到高的顺序) |
zrevrank(zrevrank key member) | 返回一个成员的排名(从高到低) |
zscore(zscore key member) | 获取一个成员的分数 |
zrem(zrem key member1 member2...) | 删除指定的成员 |
zremrangebyrank(zremrangebyrank key start stop) | 根据排名进行删除 |
zremrangebyscore(zremrangebyscore key min max) | 根据分数的范围进行删除 |