redis五大数据类型以及经常使用操做命令

 

Redis的五大数据类型java

  • String(字符串)

string是redis最基本的类型,你能够理解成与Memcached如出一辙的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string能够包含任何数据。好比jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个redis中字符串value最多能够是512Mc++

  • Hash(哈希,相似java里的Map)

Redis hash 是一个键值对集合。KV模式不变,但V是一个键值对。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。相似Java里面的Map<String,Object>redis

  • List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你能够添加一个元素导列表的头部(左边)或者尾部(右边)。它的底层实际是个链表数据库

  • Set(集合)

Redis的Set是string类型的无序集合。它是经过HashTable实现实现的,c#

  • zset(sorted set:有序集合)

Redis zset 和 set 同样也是string类型元素的集合,且不容许重复的成员。不一样的是每一个元素都会关联一个double类型的分数。redis正是经过分数来为集合中的成员进行从小到大的排序。zset的成员是惟一的,但分数(score)却能够重复。

redis常见数据类型操做命令: http://redisdoc.com/
Key(键)经常使用命令
安全

命令 用法 描述 示例
DEL DEL key [key ...] 删除给定的一个或多个 key。 不存在的 key 会被忽略  
DUMP DUMP key 序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令能够将这个值反序列化为 Redis 键  
EXISTS EXISTS key 检查给定 key 是否存在  
EXPIRE EXPIRE key seconds 为给定 key 设置生存时间,当 key 过时时(生存时间为 0 ),它会被自动删除  
PERSIST PERSIST key 移除 key 的过时时间,key 将持久保持。  
EXPIREAT EXPIREAT key timestamp EXPIREAT 的做用和 EXPIRE 相似,都用于为 key 设置生存时间。 不一样在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp) EXPIREAT cache 1355292000 # 这个 key 将在 2012.12.12 过时
KEYS KEYS pattern 查找全部符合给定模式 pattern 的 key KEYS * # 匹配数据库内全部 key
MOVE MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中
若是当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。

所以,也能够利用这一特性,将 MOVE 看成锁(locking)原语(primitive)
MOVE song 1 # 将 song 移动到数据库 1
TTL TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
不然,以秒为单位,返回 key 的剩余生存时间
 
PTTL PTTL key 以毫秒为单位返回 key 的剩余的过时时间。  
TYPE TYPE key 返回 key 所储存的值的类型  
RENAME RENAME key newkey 将 key 更名为 newkey 。
当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。
当 newkey 已经存在时, RENAME 命令将覆盖旧值
 


String (字符串)经常使用命令
大数据

命令 用法 描述 示例
SET SET key value [EX seconds] [PX milliseconds] [NX|XX] 将字符串值 value 关联到 key 。
若是 key 已经持有其余值, SET 就覆写旧值,无视类型
SET key "value"
MSET MSET key value [key value ...] 同时设置一个或多个 key-value 对。
若是某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,若是这不是你所但愿的效果,请考虑使用 MSETNX 命令:它只会在全部给定 key 都不存在的状况下进行设置操做
MSET date "2012.3.30" time "11:00 a.m." weather "sunny"
SETNX SETNX key value 将 key 的值设为 value ,当且仅当 key 不存在。
若给定的 key 已经存在,则 SETNX 不作任何动做 SETNX 是『SET if Not eXists』(若是不存在,则 SET)的简写
 
MSETNX MSETNX key value [key value ...] 同时设置一个或多个 key-value 对,当且仅当全部给定 key 都不存在。
即便只有一个给定 key 已存在, MSETNX 也会拒绝执行全部给定 key 的设置操做
 
SETRANGE SETRANGE key offset value 用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。
不存在的 key 看成空白字符串处理
 
SETBIT SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit) GETBIT bit 100 # bit 默认被初始化为 0
SETEX SETEX key seconds value 将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。
若是 key 已经存在, SETEX 命令将覆写旧值。
 
PSETEX PSETEX key milliseconds value 这个命令和 SETEX 命令类似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位  
STRLEN STRLEN key 返回 key 所储存的字符串值的长度。
当 key 储存的不是字符串值时,返回一个错误
 
GET GET key 返回 key 所关联的字符串值。
若是 key 不存在那么返回特殊值 nil
 
MGET MGET key [key ...] 返回全部(一个或多个)给定 key 的值。
若是给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。所以,该命令永不失败
 
GETRANGE GETRANGE key start end 返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。
GETRANGE greeting 0 4
GETSET GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
当 key 存在但不是字符串类型时,返回一个错误。
 
GETBIT GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
当 offset 比字符串值的长度大,或者 key 不存在时,返回 0
 
APPEND APPEND key value 若是 key 已经存在而且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
若是 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 同样
 
DECR DECR key 将 key 中储存的数字值减一。
若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 DECR 操做
redis> SET failure_times 10
OK

redis> DECR failure_times
(integer) 9
DECRBY DECRBY key decrement 将 key 所储存的值减去减量 decrement  
INCR INCR key 将 key 中储存的数字值增一。
若是 key 不存在,那么 key 的值会先被初始化为 0 ,而后再执行 INCR 操做
 
INCRBY INCRBY key increment 将 key 所储存的值加上增量 increment  
INCRBYFLOAT INCRBYFLOAT key increment 为 key 中所储存的值加上浮点数增量 increment INCRBYFLOAT mykey 0.1
BITCOUNT BITCOUNT key [start] [end] 计算给定字符串中,被设置为 1 的比特位的数量  
BITOP BITOP operation destkey key [key ...] 对一个或多个保存二进制位的字符串 key 进行位元操做,并将结果保存到 destkey 上。  


List(列表)经常使用命令
spa

命令 用法 描述 示例
LPUSH LPUSH key value [value ...] 将一个或多个值 value 插入到列表 key 的表头
若是有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头
正着进反着出
LPUSHX LPUSHX key value 将值 value 插入到列表 key 的表头,当且仅当 key 存在而且是一个列表。
和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不作
 
RPUSH RPUSH key value [value ...] 将一个或多个值 value 插入到列表 key 的表尾(最右边) 怎么进怎么出
RPUSHX RPUSHX key value 将值 value 插入到列表 key 的表尾,当且仅当 key 存在而且是一个列表。
和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不作。
 
LPOP LPOP key 移除并返回列表 key 的头元素。  
BLPOP BLPOP key [key ...] timeout 移出并获取列表的第一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止  
RPOP RPOP key 移除并返回列表 key 的尾元素。  
BRPOP BRPOP key [key ...] timeout 移出并获取列表的最后一个元素, 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。  
BRPOPLPUSH BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另一个列表中并返回它; 若是列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。  
RPOPLPUSH RPOPLPUSH source destination 命令 RPOPLPUSH 在一个原子时间内,执行如下两个动做:将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,做为 destination 列表的的头元素
RPOPLPUSH  list01 list02
LSET LSET key index value 将列表 key 下标为 index 的元素的值设置为 value  
LLEN LLEN key 返回列表 key 的长度。
若是 key 不存在,则 key 被解释为一个空列表,返回 0 .
若是 key 不是列表类型,返回一个错误
 
LINDEX LINDEX key index 返回列表 key 中,下标为 index 的元素。
下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。
 
LRANGE LRANGE key start stop 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定  
LREM LREM key count value 根据参数 count 的值,移除列表中与参数 value 相等的元素  
LTRIM LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间以内的元素都将被删除  
LINSERT LINSERT key BEFORE|AFTER pivot value 将值 value 插入到列表 key 当中,位于值 pivot 以前或以后。
当 pivot 不存在于列表 key 时,不执行任何操做。
当 key 不存在时, key 被视为空列表,不执行任何操做。
若是 key 不是列表类型,返回一个错误。
LINSERT list01 before c++ c#(在c++以前加上C#)


Hash(哈希表)经常使用命令
unix

命令 用法 描述 示例
HSET HSET key field value 将哈希表 key 中的域 field 的值设为 value 。
若是 key 不存在,一个新的哈希表被建立并进行 HSET 操做。
若是域 field 已经存在于哈希表中,旧值将被覆盖。
 
HMSET HMSET key field value [field value ...] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
此命令会覆盖哈希表中已存在的域。
 
HSETNX HSETNX key field value 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
若域 field 已经存在,该操做无效
 
HGET HGET key field 返回哈希表 key 中给定域 field 的值  
HMGET HMGET key field [field ...] 返回哈希表 key 中,一个或多个给定域的值。  
HGETALL HGETALL key 返回哈希表 key 中,全部的域和值。
在返回值里,紧跟每一个域名(field name)以后是域的值(value),因此返回值的长度是哈希表大小的两倍
 
HDEL HDEL key field [field ...] 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略  
HEXISTS HEXISTS key field 查看哈希表 key 中,给定域 field 是否存在  
HLEN HLEN key 返回哈希表 key 中域的数量  
HKEYS HKEYS key 返回哈希表 key 中的全部域  
HVALS HVALS key 返回哈希表 key 中全部域的值  
HSTRLEN HSTRLEN key field 返回哈希表 key 中,
与给定域 field 相关联的值的字符串长度(string length)。
若是给定的键或者域不存在,
那么命令返回 0
 
HINCRBY HINCRBY key field increment 为哈希表 key 中的域 field 的值加上增量 increment  
HINCRBYFLOAT HINCRBYFLOAT key field increment 为哈希表 key 中的域 field 加上浮点数增量 increment  
HSCAN HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对。  


Set(集合)经常使用命令
对象

命令 用法 描述 示例
SADD SADD key member [member ...] 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
假如 key 不存在,则建立一个只包含 member 元素做成员的集合。
当 key 不是集合类型时,返回一个错误
 
SCARD SCARD key 返回集合 key 的基数(集合中元素的数量)。  
SDIFF SDIFF key [key ...] 返回一个集合的所有成员,该集合是全部给定集合之间的差集。
不存在的 key 被视为空集。
差集
SDIFFSTORE SDIFFSTORE destination key [key ...] 这个命令的做用和 SDIFF 相似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
若是 destination 集合已经存在,则将其覆盖。
destination 能够是 key 自己。
 
SINTER SINTER key [key ...] 返回一个集合的所有成员,该集合是全部给定集合的交集。
不存在的 key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)
交集
SINTERSTORE SINTERSTORE destination key [key ...] 这个命令相似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
若是 destination 集合已经存在,则将其覆盖。
destination 能够是 key 自己
 
SUNION SUNION key [key ...] 返回一个集合的所有成员,该集合是全部给定集合的并集。
不存在的 key 被视为空集
并集
SUNIONSTORE SUNIONSTORE destination key [key ...] 这个命令相似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
若是 destination 已经存在,则将其覆盖。
destination 能够是 key 自己
 
SMEMBERS SMEMBERS key 返回集合 key 中的全部成员。
不存在的 key 被视为空集合
 
SRANDMEMBER SRANDMEMBER key [count] 若是命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素  
SISMEMBER SISMEMBER key member 判断 member 元素是否集合 key 的成员  
SMOVE SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合。  
SPOP SPOP key 移除并返回集合中的一个随机元素。
若是只想获取一个随机元素,但不想该元素从集合中被移除的话,可使用 SRANDMEMBER 命令。
 
SREM SREM key member [member ...] 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
当 key 不是集合类型,返回一个错误
 
SSCAN SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素  



SortedSet(有序集合)经常使用命令

命令 用法 描述 示例
ZADD ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数  
ZCARD ZCARD key 返回有序集 key 的基数。  
ZCOUNT ZCOUNT key min max 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
关于参数 min 和 max 的详细使用方法,请参考 ZRANGEBYSCORE 命令。
 
ZRANGE ZRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定区间内的成员。
其中成员的位置按 score 值递增(从小到大)来排序
 
ZREVRANGE ZREVRANGE key start stop [WITHSCORES] 返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。
具备相同 score 值的成员按字典序的逆序(reverse lexicographical order)排列。除了成员按 score 值递减的次序排列这一点外, ZREVRANGE 命令的其余方面和 ZRANGE 命令同样。
 
ZREVRANGEBYSCORE ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的全部的成员。有序集成员按 score 值递减(从大到小)的次序排列。  
ZREVRANK ZREVRANK key member 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。
排名以 0 为底,也就是说, score 值最大的成员排名为 0 。
使用 ZRANK 命令能够得到成员按 score 值递增(从小到大)排列的排名。
 
ZSCORE ZSCORE key member 返回有序集 key 中,成员 member 的 score 值。
若是 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
 
ZRANGEBYSCORE ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回有序集 key 中,全部 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。  
ZRANK ZRANK key member 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。  
ZINCRBY ZINCRBY key increment member 为有序集 key 的成员 member 的 score 值加上增量 increment  
ZREM ZREM key member [member ...] 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。
当 key 存在但不是有序集类型时,返回一个错误。
 
ZREMRANGEBYRANK ZREMRANGEBYRANK key start stop 移除有序集 key 中,指定排名(rank)区间内的全部成员  
ZREMRANGEBYSCORE ZREMRANGEBYSCORE key min max 移除有序集 key 中,全部 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。  
ZUNIONSTORE ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
默认状况下,结果集中某个成员的 score 值是全部给定集下该成员 score 值之 和 。
 
ZINTERSTORE ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] 计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认状况下,结果集中某个成员的 score 值是全部给定集下该成员 score 值之和.
 
ZSCAN ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)  
ZRANGEBYLEX ZRANGEBYLEX key min max [LIMIT offset count] 当有序集合的全部成员都具备相同的分值时,
有序集合的元素会根据成员的字典序(lexicographical ordering)来进行排序,
而这个命令则能够返回给定的有序集合键 key 中,
值介于 min 和 max 之间的成员。
 
ZLEXCOUNT ZLEXCOUNT key min max 对于一个全部成员的分值都相同的有序集合键 key 来讲,
这个命令会返回该集合中,
成员介于 min 和 max 范围内的元素数量。
这个命令的 min 参数和 max 参数的意义和 ZRANGEBYLEX 命令的 min 参数和 max 参数的意义同样
 
ZREMRANGEBYLEX ZREMRANGEBYLEX key min max 对于一个全部成员的分值都相同的有序集合键 key 来讲,这个命令会移除该集合中,成员介于 min 和 max 范围内的全部元素。这个命令的 min 参数和 max 参数的意义和 ZRANGEBYLEX 命令的 min 参数和 max 参数的意义同样
相关文章
相关标签/搜索