Redis新手快速入门(二)
2017-08-08 23:15
363 查看
以下数据类型的操作从简介绍。
例:
redis> LPUSH languages python # 加入单个元素
(integer) 1
redis> LPUSH languages python # 加入重复元素
(integer) 2
redis> LRANGE languages 0 -1 # 列表允许重复元素
1) “python”
2) “python”
redis> LPUSH mylist a b c # 加入多个元素
(integer) 3
redis> LRANGE mylist 0 -1
1) “c”
2) “b”
3) “a”
例:
redis> LLEN course
(integer) 0
redis> RPUSH course algorithm001
(integer) 1
redis> RPUSH course c++101
(integer) 2
redis> LPOP course # 移除头元素
“algorithm001”
例:
redis> RPUSH fp-language lisp
(integer) 1
redis> LRANGE fp-language 0 0
1) “lisp”
redis> RPUSH fp-language scheme
(integer) 2
redis> LRANGE fp-language 0 1
1) “lisp”
2) “scheme”
例:
redis> SADD bbs “discuz.net” # 添加单个元素
(integer) 1
redis> SADD bbs “discuz.net” # 添加重复元素
(integer) 0
redis> SADD bbs “tianya.cn” “groups.google.com” # 添加多个元素
(integer) 2
redis> SMEMBERS bbs
1) “discuz.net”
2) “groups.google.com”
3) “tianya.cn”
例:
redis> SMEMBERS languages # 测试数据
1) “c”
2) “lisp”
3) “python”
4) “ruby”
redis> SREM languages ruby # 移除单个元素
(integer) 1
redis> SREM languages non-exists-language # 移除不存在元素
(integer) 0
redis> SREM languages lisp python c # 移除多个元素
(integer) 3
redis> SMEMBERS languages
(empty list or set)
例:
redis> EXISTS not_exists_key # key 不存在或集合为空
(integer) 0
redis> SMEMBERS not_exists_key
(empty list or set)
redis> SADD language Ruby Python Clojure # 非空集合
(integer) 3
redis> SMEMBERS language
1) “Python”
2) “Ruby”
3) “Clojure”
例:
redis> HSET website google “www.g.cn” # 设置一个新域
(integer) 1
redis> HSET website google “www.google.com” # 覆盖一个旧域
(integer) 0
例:
redis> HSET site redis redis.com
(integer) 1
redis> HGET site redis
“redis.com”
例:
redis> HSET people jack “Jack Sparrow”
(integer) 1
redis> HSET people gump “Forrest Gump”
(integer) 1
redis> HGETALL people
1) “jack” # 域
2) “Jack Sparrow” # 值
3) “gump”
4) “Forrest Gump”
例:
测试数据
redis> HGETALL abbr
1) “a”
2) “apple”
3) “b”
4) “banana”
5) “c”
6) “cat”
7) “d”
8) “dog”
删除单个域
redis> HDEL abbr a
(integer) 1
删除不存在的域
redis> HDEL abbr not-exists-field
(integer) 0
删除多个域
redis> HDEL abbr b c
(integer) 2
redis> HGETALL abbr
1) “d”
2) “dog”
例:
添加单个元素
redis> ZADD page_rank 10 google.com
(integer) 1
添加多个元素
redis> ZADD page_rank 9 baidu.com 8 bing.com
(integer) 2
redis> ZRANGE page_rank 0 -1 WITHSCORES
1) “bing.com”
2) “8”
3) “baidu.com”
4) “9”
5) “google.com”
6) “10”
添加已存在元素,且 score 值不变
redis> ZADD page_rank 10 google.com
(integer) 0
redis> ZRANGE page_rank 0 -1 WITHSCORES # 没有改变
1) “bing.com”
2) “8”
3) “baidu.com”
4) “9”
5) “google.com”
6) “10”
添加已存在元素,但是改变 score 值
redis> ZADD page_rank 6 bing.com
(integer) 0
redis> ZRANGE page_rank 0 -1 WITHSCORES # bing.com 元素的 score 值被改变
1) “bing.com”
2) “6”
3) “baidu.com”
4) “9”
5) “google.com”
6) “10”
例:
redis > ZRANGE salary 0 -1 WITHSCORES # 显示整个有序集成员
1) “jack”
2) “3500”
3) “tom”
4) “5000”
5) “boss”
6) “10086”
redis > ZRANGE salary 1 2 WITHSCORES # 显示有序集下标区间 1 至 2 的成员
1) “tom”
2) “5000”
3) “boss”
4) “10086”
redis > ZRANGE salary 0 200000 WITHSCORES # 测试 end 下标超出最大下标时的情况
1) “jack”
2) “3500”
3) “tom”
4) “5000”
5) “boss”
6) “10086”
redis > ZRANGE salary 200000 3000000 WITHSCORES # 测试当给定区间不存在于有序集时的情况
(empty list or set)
更多redis内容:
Redis新手快速入门(一)http://blog.csdn.net/Ink4T/article/details/76944789
2.3 List的操作
/* 插入数据 */ LPUSH key value [value ...] // 将一个或多个值 value 插入到列表 key 的表头 // 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。 // 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 // 当 key 存在但不是列表类型时,返回一个错误。
例:
redis> LPUSH languages python # 加入单个元素
(integer) 1
redis> LPUSH languages python # 加入重复元素
(integer) 2
redis> LRANGE languages 0 -1 # 列表允许重复元素
1) “python”
2) “python”
redis> LPUSH mylist a b c # 加入多个元素
(integer) 3
redis> LRANGE mylist 0 -1
1) “c”
2) “b”
3) “a”
/* 插入数据 */ RPUSH key value [value ...] // 将一个或多个值 value 插入到列表 key 的表尾(最右边)。 // 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。 // 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。 // 当 key 存在但不是列表类型时,返回一个错误。
/* 移除数据 */ LPOP key // 移除并返回列表 key 的头元素。
例:
redis> LLEN course
(integer) 0
redis> RPUSH course algorithm001
(integer) 1
redis> RPUSH course c++101
(integer) 2
redis> LPOP course # 移除头元素
“algorithm001”
/* 移除数据 */ RPOP key // 移除并返回列表 key 的尾元素。
/* 查询数据 */ LRANGE key start stop // 返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。 // 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 // 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
例:
redis> RPUSH fp-language lisp
(integer) 1
redis> LRANGE fp-language 0 0
1) “lisp”
redis> RPUSH fp-language scheme
(integer) 2
redis> LRANGE fp-language 0 1
1) “lisp”
2) “scheme”
2.4 Set的操作(单值多value(不重复))
/* 添加 */ SADD key member [member ...] // 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。 // 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。 // 当 key 不是集合类型时,返回一个错误。
例:
redis> SADD bbs “discuz.net” # 添加单个元素
(integer) 1
redis> SADD bbs “discuz.net” # 添加重复元素
(integer) 0
redis> SADD bbs “tianya.cn” “groups.google.com” # 添加多个元素
(integer) 2
redis> SMEMBERS bbs
1) “discuz.net”
2) “groups.google.com”
3) “tianya.cn”
/* 移除 */ SREM key member [member ...] // 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。 // 当 key 不是集合类型,返回一个错误。
例:
redis> SMEMBERS languages # 测试数据
1) “c”
2) “lisp”
3) “python”
4) “ruby”
redis> SREM languages ruby # 移除单个元素
(integer) 1
redis> SREM languages non-exists-language # 移除不存在元素
(integer) 0
redis> SREM languages lisp python c # 移除多个元素
(integer) 3
redis> SMEMBERS languages
(empty list or set)
/* 查看 */ SMEMBERS key // 返回集合 key 中的所有成员。 // 不存在的 key 被视为空集合。
例:
redis> EXISTS not_exists_key # key 不存在或集合为空
(integer) 0
redis> SMEMBERS not_exists_key
(empty list or set)
redis> SADD language Ruby Python Clojure # 非空集合
(integer) 3
redis> SMEMBERS language
1) “Python”
2) “Ruby”
3) “Clojure”
/* 随机出栈 */ SPOP key // 移除并返回集合中的一个随机元素。 // 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。 SRANDMEMBER key [count] // 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。 // 从 Redis 2.6 版本开始, SRANDMEMBER 命令接受可选的 count 参数: // 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。 // 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。 // 该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。
2.5 Hash的操作(KV模式不变,但V是一个键值对)
/* 添加 */ HSET key field value // 将哈希表 key 中的域 field 的值设为 value 。 // 如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。 // 如果域 field 已经存在于哈希表中,旧值将被覆盖。
例:
redis> HSET website google “www.g.cn” # 设置一个新域
(integer) 1
redis> HSET website google “www.google.com” # 覆盖一个旧域
(integer) 0
/* 查看 */ HGET key field // 返回哈希表 key 中给定域 field 的值。
例:
redis> HSET site redis redis.com
(integer) 1
redis> HGET site redis
“redis.com”
/* 查看全部 */ HGETALL key // 返回哈希表 key 中,所有的域和值。 // 在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
例:
redis> HSET people jack “Jack Sparrow”
(integer) 1
redis> HSET people gump “Forrest Gump”
(integer) 1
redis> HGETALL people
1) “jack” # 域
2) “Jack Sparrow” # 值
3) “gump”
4) “Forrest Gump”
/* 删除 */ HDEL key field [field ...] //删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
例:
测试数据
redis> HGETALL abbr
1) “a”
2) “apple”
3) “b”
4) “banana”
5) “c”
6) “cat”
7) “d”
8) “dog”
删除单个域
redis> HDEL abbr a
(integer) 1
删除不存在的域
redis> HDEL abbr not-exists-field
(integer) 0
删除多个域
redis> HDEL abbr b c
(integer) 2
redis> HGETALL abbr
1) “d”
2) “dog”
2.6 Zset的操作(Sorted Set)
/* 增加 */ ZADD key score member [[score member] [score member] ...] // 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。 // 如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 // score 值可以是整数值或双精度浮点数。 // 如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。 // 当 key 存在但不是有序集类型时,返回一个错误。 // 对有序集的更多介绍请参见 sorted set 。
例:
添加单个元素
redis> ZADD page_rank 10 google.com
(integer) 1
添加多个元素
redis> ZADD page_rank 9 baidu.com 8 bing.com
(integer) 2
redis> ZRANGE page_rank 0 -1 WITHSCORES
1) “bing.com”
2) “8”
3) “baidu.com”
4) “9”
5) “google.com”
6) “10”
添加已存在元素,且 score 值不变
redis> ZADD page_rank 10 google.com
(integer) 0
redis> ZRANGE page_rank 0 -1 WITHSCORES # 没有改变
1) “bing.com”
2) “8”
3) “baidu.com”
4) “9”
5) “google.com”
6) “10”
添加已存在元素,但是改变 score 值
redis> ZADD page_rank 6 bing.com
(integer) 0
redis> ZRANGE page_rank 0 -1 WITHSCORES # bing.com 元素的 score 值被改变
1) “bing.com”
2) “6”
3) “baidu.com”
4) “9”
5) “google.com”
6) “10”
/* 查看 */ ZRANGE key start stop [WITHSCORES] /* 返回有序集 key 中,指定区间内的成员。 其中成员的位置按 score 值递增(从小到大)来排序。 具有相同 score 值的成员按字典序(lexicographical order )来排列。 如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。 你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。 超出范围的下标并不会引起错误。 比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。 另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。 可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。 客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。 */
例:
redis > ZRANGE salary 0 -1 WITHSCORES # 显示整个有序集成员
1) “jack”
2) “3500”
3) “tom”
4) “5000”
5) “boss”
6) “10086”
redis > ZRANGE salary 1 2 WITHSCORES # 显示有序集下标区间 1 至 2 的成员
1) “tom”
2) “5000”
3) “boss”
4) “10086”
redis > ZRANGE salary 0 200000 WITHSCORES # 测试 end 下标超出最大下标时的情况
1) “jack”
2) “3500”
3) “tom”
4) “5000”
5) “boss”
6) “10086”
redis > ZRANGE salary 200000 3000000 WITHSCORES # 测试当给定区间不存在于有序集时的情况
(empty list or set)
更多redis内容:
Redis新手快速入门(一)http://blog.csdn.net/Ink4T/article/details/76944789
相关文章推荐
- Redis新手快速入门(一)
- ASP.NET MVC 新手入门,快速学习(含:范例下载)
- Redis快速入门
- 新手如何快速入门node.js
- JDBC新手快速入门
- Redis快速入门
- Redis快速入门:安装、配置和操作
- 10分钟快速入门Redis,从安装到启动配置
- Redis快速入门
- 速卖通新手快速入门手册之一认识物流
- NoSQL 数据库 Redis 快速入门
- Android新手快速入门
- Redis快速入门
- Java redis 新手入门常用语法demo2
- [你必须知道的NOSQL系列]专题二:Redis快速入门
- redis快速入门
- Redis快速入门
- redis快速入门(转)
- Redis快速入门:初识Redis
- 新手如何快速入门node.js