redis学习(二)

集合

添加/删除元素

SADD key member1 member2 ...

SREM key member1 member2 ...

获得集合中的所有元素

SMEMBERS key

127.0.0.1:6380> sadd car benz baoma xiandai
(integer) 3
127.0.0.1:6380> smembers car
1) "baoma"
2) "xiandai"
3) "benz"
127.0.0.1:6380> srem car benz
(integer) 1
127.0.0.1:6380> smembers car
1) "baoma"
2) "xiandai"
127.0.0.1:6380> 

判断某个元素是否在集合中,存在则返回1,不存在则返回0

SISMEMBER key  member

127.0.0.1:6380> sismember car xiandai
(integer) 1
127.0.0.1:6380> sismember car benz
(integer) 0
127.0.0.1:6380> 

集合间的运算

SDIFF key1 key2...   即A-B={x|x∈A且x∈/B}

SINTER key1 key2...   即A∩B={x|x∈A且x∈B}

SUNION key1 key2 ... 即AUB={x|x∈A 或x∈B}

127.0.0.1:6380> sadd a 1 2 3 4
(integer) 4
127.0.0.1:6380> sadd b 3 4 5 6
(integer) 4
127.0.0.1:6380> sdiff a b
1) "1"
2) "2"
127.0.0.1:6380> sinter a b
1) "3"
2) "4"
127.0.0.1:6380> sunion a b
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6380> 

进行集合运算并将结果存储

SDIFFSTORE destination key [key …]
SINTERSTORE destination key [key …]
SUNIONSTORE destination key [key …]

SDIFFSTORE命令和SDIFF命令功能一样,唯一的区别就是前者不会直接返回运算结果,而是将结果存储在destination键中。

SDIFFSTORE命令常用于需要进行多步集合运算的场景中,如需要先计算差集再将结果和其他键计算交集。

获取集合中元素的个数:

SCARD key

随机获得集合中的元素

SRANDMEMBER key [count]

(1)当count为正数时,SRANDMEMBER会随机从集合里获得count个不重复的元素。如果count的值大于集合中的元素个数,则SRANDMEMBER会返回集合中的全部元素。(2)当count为负数时,SRANDMEMBER会随机从集合里获得|count|个的元素,这些元素有可能相同。

127.0.0.1:6380> srandmember a 2
1) "4"
2) "2"
127.0.0.1:6380> srandmember a
"3"
127.0.0.1:6380> 

从集合中弹出一个元素

SPOP KEY  这个随机弹出的

127.0.0.1:6380> smembers a
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6380> spop a
"1"
127.0.0.1:6380> spop a
"3"
127.0.0.1:6380> smembers a
1) "2"
2) "4"
127.0.0.1:6380> 

 有序集合

有序集合类型在某些方面和列表类型有些相似。
(1)二者都是有序的。
(2)二者都可以获得某一范围的元素。
但是二者有着很大的区别,这使得它们的应用场景也是不同的。
(1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的
应用。
(2)有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)))。
(3)列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)。
(4)有序集合要比列表类型更耗费内存。有序集合类型算得上是 Redis的5种数据类型中最高级的类型了,在学习时可以与列表类型和集合类型对照理解。

增加元素

ZADD key scord member [scord member ...]

修改某个元素的分数

ZADD key scord member

获取元素的分数

ZSCORE key member

127.0.0.1:6380> zadd cheeron 90 math 80 english 89 chinese
(integer) 3
127.0.0.1:6380> zadd cheeron 87 english
(integer) 0
127.0.0.1:6380> zscore cheeron math
"90"
127.0.0.1:6380> zscore cheeron english
"87"
127.0.0.1:6380> 

获得排名在某个范围的元素列表

ZRANGE key start stop [WITHSCORES]

ZREVRANGE key start stop [WITHSCORES]

ZRANGE命令会按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)。ZRANGE命令与LRANGE命令十分相似,如索引都是从0开始,负数代表从后向前查找(-1表示最后一个元素)。

127.0.0.1:6380> zrange cheeron 0 2
1) "english"
2) "chinese"
3) "math"
127.0.0.1:6380> zrange cheeron 1 -1
1) "chinese"
2) "math"
127.0.0.1:6380> zrange cheeron 2 0
(empty list or set)

如果需要同时获得元素的分数的话可以在ZRANGE命令的尾部加上WITHSCORES参数

127.0.0.1:6380> zrange cheeron 0 -1 withscores
1) "english"
2) "87"
3) "chinese"
4) "89"
5) "math"
6) "90"
127.0.0.1:6380> 

获得指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
ZRANGEBYSCORE命令参数虽然多,但是都很好理解。该命令按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)的元素:

加了"("则表示不包含的意思

127.0.0.1:6380> zrangebyscore cheeron 80 90
1) "english"
2) "chinese"
3) "math"
127.0.0.1:6380> zrangebyscore cheeron 80 (90
1) "english"
2) "chinese"
127.0.0.1:6380> 
时间: 2024-10-02 20:32:49

redis学习(二)的相关文章

Redis学习二

Redis学习二 标签(空格分隔): Redis 一,link 链表结构 1,lpush key value (rpush插入到链表尾部) 作用: 把值插入到链接头部 2,rpop key(lpop key 返回并删除链表的头元素) 作用: 返回并删除链表尾元素 3,lrange key start stop 作用: 返回链表中[start ,stop]中的元素 规律: 左数从0开始,右数从-1开始 lrange link 0 2 lrange link 0 -1 4,lrem key coun

C#中使用Redis学习二 .NET4.5中使用redis hash操作

上一篇>> 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表.并且会将封装的一些代码贴一下.在讲解的过程中,我打算结合redis操作命令一起叙述,算是作为对比吧.这样也能让读者清楚了解,所分装的代码对应的redis的哪一些操作命令. hash哈希表简介 如何在.NET4.0/4.5中安装redis组件? 在上一篇博文中,安装好的redis服务器端,要记得开启服务.然后再

C#中使用Redis学习二 在.NET4.5中使用redis hash操作

C#中使用REDIS学习一 WINDOWS安装REDIS服务器端和客户端 http://www.tuicool.com/articles/uMb2Yjz 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表.并且会将封装的一些代码贴一下.在讲解的过程中,我打算结合redis操作命令一起叙述,算是作为对比吧.这样也能让读者清楚了 解,所分装的代码对应的redis的哪一些操作命令

Redis 学习(二) —— 数据类型及操作

Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个字符串最大为 512M 字节.字符串数据类型适用于很多场景,例如,缓存 HTML 片段或者页面. Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串可以包含任意类型的数据,例如一张 JPEG 图像,或者一个序列化的对象. 我们可以把字符串当做位数组(位图)来处理,很容易统计一些基于

Redis学习二:Redis入门介绍

一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器. Redis 与其他 key - value 缓存产品(memcached)有以下三个特点: 1)持久化:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再

redis学习二 排序

文章转载自:http://www.cnblogs.com/redcreen/archive/2011/02/15/1955226.html redis支持对list,set和sorted set元素的排序.排序命令是sort 完整的命令格式如下: SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey]  下面我们一一说明各种命令选项 (1)sort key 这个是最简单的情

redis ruby客户端学习( 二)

接上一篇redis ruby客户端学习( 二) 对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串. 1,哈希(Map) hset.设置 key 指定的哈希集中指定字段的值.如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联.如果字段在哈希集中存在,它将被重写. require "redis" r = Redis.new r.hset 'my_h

Redis学习(二)、JAVA操作Redis

Redis学习(二).JAVA操作Redis 一.测试连接Redis是否连通 1.导包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 2.写一个RedisJava类测试 package cn.qiuuuu.redis; impo

(转)redis 学习笔记(1)-编译、启动、停止

redis 学习笔记(1)-编译.启动.停止 一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先到这里下载Stable稳定版,目前最新版本是2.8.17 1.2 上传到linux,然后运行以下命令解压 tar xzf redis-2.8.17.tar.gz 1.3 编译 cd redis-2.8.17make 注:make命令需要linux上安装gcc,若机器上未安装gcc,redhat环境下,如

Redis学习手册(目录)

Posted on 2012-04-16 07:40 Stephen_Liu 阅读(29155) 评论(25) 编辑 收藏 为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后就是上手容易,操作简单.记得在刚刚接触Redis的时候,由于当时项目的工期相当紧张,留给我们做出选择的空间也是非常有限,一旦技术决策失误,造成的后果也比较严重.所以在做出决定之