redis中五种数据类型
-
- 字符串 String
- 特点: 存储所有的字符和字符串
- 应用场景: 做缓存使用
-
- 哈希 hash
- 特点: 相当于java中hashMap集合
- 应用场景: 可以存储javaBean对象, 此种使用场景不多,可被String替代
-
- list集合
- 特点: 相当于java中linkList, 是一个链表的结构
- 应用场景: 做任务队列,
- 在java中客户端提供了线程安全获取集合数据的方式
-
- set 集合
- 特点: 唯一, 无序
- 应用场景: 集合运算
- 例如去重复的操作
-
- 有序set集合: sorted set
- 特点:唯一, 有序
- 应用场景: 一般用来做排行榜
redis中String类型相关命令
赋值: set key value
- 设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”
取值: get key
- 获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返回(nil)
删除: del key
- 删除指定的key
数值增减:
-
增减值: incr key
- 将指定的key的value原子性的递增1.如果该key不存在,其初始值为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息。
-
减少值: decr key
- 将指定的key的value原子性的递减1.如果该key不存在,其初始值为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息
-
增加固定的值: incrby key increment
- 将指定的key的value原子性增加increment,如果该key不存在,器初始值为0,在incrby之后,该值为increment。如果该值不能转成整型,如hello则失败并返回错误信息
-
减少固定的值: decrby key decrement
- 将指定的key的value原子性减少decrement,如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能转成整型,如hello则失败并返回错误信息
拼接value值: append key value
- 将指定的key的value原子性减少decrement,如果该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能转成整型,如hello则失败并返回错误信息
-
拼凑字符串。如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key|value
为key中内容设置有效时长:
-
为新创建的key设置时长
- setex key seconds value
-
为已有的key设置有效时长
- expire key seconds
判断key是否存在: exists key
- expire key seconds
-
返回1 表示存在, 返回0 表示不存在
-
获取key还剩余有效时长: ttl key
- 特殊: 返回-1 表示永久有效 返回-2 表示不存在
-
keys * : 用来查看所有的key
redis中hash类型的相关命令
存值: hset key field value
- key为一个字符串, value类似于map,同样有一个field和value
取值:
- 获取指定key的field的值: hget key field
- 获取指定key的多个field值: hmget key fields
- 获取指定key中的所有的field与value的值: hgetall key
- 获取指定key中map的所有的field: hkeys key
- 获取指定key中map的所有的value: hvals key
- 删除:
- hdel key field [field … ] :可以删除一个或多个字段,返回值是被删除的字段个数
- del key :删除整个内容
- 增加数字:
- hincrby key field number:为某个key的某个属性增加值
- 判断某个key中的filed是否存在: hexists key field
- 返回 0表示没有, 返回1 表示有
- 获取key中所包含的field的数量: hlen key
redis中list集合类型的相关命令
redis的中的list集合类似于java中的linkedlist集合,此集合也是队列的一种, 支持向两端操作
- 添加:
- 从左侧添加: lpush key values[value1 value2…]
- 在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。
- 从右侧添加: rpush key values[value1、value2…]
- 在该list的尾部添加元素
- 从左侧添加: lpush key values[value1 value2…]
- 查看列表 : lrange key start end
- 获取链表中从start到end的元素的值,start、end从0开始计数;end可为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…
- 删除(弹出):
- 从左侧弹出:lpop key
- 返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素
- 从右侧弹出: rpop key
- 从尾部弹出元素
- 从左侧弹出:lpop key
- 获取列表中元素的个数: llen key
- 返回指定的key关联的链表中的元素的数量
- 向指定的key插入数据, 仅在key存在时插入, 不存在不插入
- 从左侧:lpushx key value
- 从右侧: rpushx key value
- lrem key count value:
- 删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素
- lset key index value:
- 设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛异常。
- linsert key before|after pivot value
- 在pivot元素前或者后插入value这个元素。
- rpoplpush resource destination
- 将链表中的尾部元素弹出并添加到头部。[循环操作]
redis中的set集合的相关命令操作
- 添加: sadd key values[value1、value2…]
- 向set中添加数据,如果该key的值已有则不会重复添加
- 删除: srem key members[member1、member2…]
- 删除set中指定的成员
- 获取所有的元素: smembers key
- 获取set中所有的成员
- 判断元素是否存在: sismember key member
- 判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在。(无论集合中有多少元素都可以极速的返回结果)
- 集合的差集运算: sdiff key1 key2…
- 返回key1与key2中相差的成员,而且与key的顺序有关。那个在前, 返回那个key对应的差集
- 集合的交集运算:sinter key1 key2 key3…
- 返回交集, 两个key都有的
- 集合的并集运算:sunion key1 key2 key3…
- 返回并集
- 获取set中成员的数量:
- scard key
- 随机返回set中的一个成员:
- srandmember key
- 将key1、key2相差的成员存储在destination上:
- sdiffstore destination key1 key2…
- 将返回的交集存储在destination上:
- sinterstore destination key[key…]
- 将返回的并集存储在destination上:
- sunionstore destination key[key…]
redis中的sortedset集合的相关操作:
- 添加数据: zadd key score member
- 将所有成员以及该成员的分数存放到sorted-set中。如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素
- 获得元素:
- zscore key member: 返回指定元素的值
- zcard key: 获取集合中的成员数量
- 删除元素:zrem key member[member…]
- 移除集合中指定的成员,可以指定多个成员。
- zrank key member:
- 返回成员在集合中的排名。(从小到大)
- zrevrank key member
- 返回成员在集合中的排名。(从大到小)
- zincrby key increment member:
- 设置指定成员的增加的分数。返回值是更改后的分数 …
- 范围查询:
- zrange key start end [withscores]: 获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数
- zrevrange key start stop [withscores]: 按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
- zremrangebyrank key start stop: 按照排名范围删除元素
- zremrangebyscore key min max: 按照分数范围删除元素
- zrangebyscore key min max [withscores][limit offset count]:
- 返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]:显示分数;[limit offset count]:offset,表明从脚标为offset的元素开始并返回count个成员a
- zcount key min max:
- 获取分数在[min,max]之间的成员