集合Set 

 
Redis 的集合不是 个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来
存储和查找数据,理论上 个集合可以存储 232 (大约 42 亿)个元素,因为采用哈希表结
构,所以对于 Redis 集合的插入、删除和查找的复杂度都是 0(1 ),只是我们需要注意:
 
1.对于集合而言,它的每 个元素都是不能重复的,当插入相同记录的时候都会失败
2.集合是无序的。
3.集合的每 个元素都是 String 数据结构类型。
 
Red is 的集合可以对于不同的集合进行操作,比如求出两个或者以上集合的交集、 差集和并集等。

sadd/smembers/sismember

sadd key number [member2 .....]  给键为key的集合增加成员,可增加多个
smembers key  返回集合所有成员
sismember  key member  判断member是否是key集合的成员

 scard,获取集合里面的元素个数
    获取集合里面的元素个数
scard key

srem key value 删除集合中元素
srem key member [ member2 .... ]
移除集合中 元素,可以是多个元素

 srandmember key 某个整数(随机出几个数)
 *   从set集合里面随机取出2个
 *   如果超过最大数量就全部取出,
 *   如果写的值是负数,比如-3 ,表示需要取出3个,但是可能会有重复值。
srandmember key [count]
count为随机出数的个数,默认为1,为负数则取绝对值

spop key 随机出栈
随机弹 集合的一个元素
注意其随机性 因为集合是无序的

smove key1 key2 在key1里某个值      作用是将key1里的某个值赋给key2
smove src des member
将成员 member 从集合 src 迁移到集合 des
原来集合的值可以说已经没有了,直接去了另一个集合,另一个集合可以存在,不存在则创建

差集:sdiff
交集:sinter
并集:sunion
 
sdiff key I [key2]   找出两个综合的差集                参数如果是单 key ,那么 Red is 就返回这key 的所有元素
sinter key I [key2]  key key2 两个集合的交集。    参数如果是单 key ,那么 Red is 就返回这key 的所有元素
sunion key l [key2]     求两 集合 并集                   参数如果是单 key ,那么 Red is 就返回这key 的所有元素

Hash哈希
Redis 中哈希结构就如同 Java map 一样 个对象里面有许多键值对,它是特别
合存储对象的 ,如果内存足够大,那么 Redis hash 结构可以存储 232_ 键值对 40
多亿)。 般而言 不会使用到那么大的一个键值对,所以我们认为 Redis 可以存储很多的
键值对。在 Redis 中, hash 是一个 String 类型的 field value 映射表,因此我们存储的
数据实际在 Redis内存中的一个字符串
 
hash 的键值对在内存中是一种无序的状态

KV模式不变,但V是一个键值对
 

hset/hget/hmset/hmget/hgetall/hdel
hset key file value:设置键值对  单个
hget :获取属性值  单个
 

hmset key field1 value1 [filed2 value2...]  设置键值对, 多个
hmget:获取多个hash指定键的值   多个
 

hgetall:获取所有hash结构中的值

 

hdel:删除hash中的某些字段

 

hlen返回key中的数量

 

hexists key 在key里面的某个值的key

 

hkeys/hvals
hkeys:获取所有的键
hvals:获取所有的值
 

hincrby/hincrbyfloat
hincrby key field incremen:指定给 hash 结构中的某 字段加上 个整,要求该字段也是整数字符串
hincrbyfloat key field increment:指定给 hash 结构中的某 字段加上 个浮点数,要求该字段也是整数字符串
 

 hsetnx:不存在赋值,存在了无效。
hsetnx key field value
 

 

有序集合:
只是说它是有序的
和无序集合的主要区别在于每 个元素除了值之外,它还会多一个分数
分数是一个浮点数,在 Java 中是使用双精度表示的
 
Redis 就可以支持对分数从小到大或者从大到小的排序。这里和无序集合一样,对于
每一个元素都是唯一的 ,但是对于不同元素而 ,它的分数可以一样。

有序集合是依赖 key 标示它是属于哪个集合,依赖分数进行排序,所以值和分数是必须的

 zadd/zrange
zadd key score value(value1) 【score2 value2 ...] :增加一个或多个成员,key不存在则创建有序集合

zrangebyscore key 开始score 结束score

zrem key 某score下对应的value值,作用是删除元素
 
zcard/zcount key score区间/zrank key values值,作用是获得下标值/zscore key 对应值,获得分数
zcard:统计个数
zcount key score: zcount key min max        根据分数返回对应的成员列表
zrank key values:

zrevrank key values值,作用是逆序获得下标值

 zrevrange  从大到小的按分数排序
zrevrange key start end

zrevrangebyscore  key 结束score 开始score
从大到小的按分数排序
zrevrangebyscore key max min [withscores

Redis数据类型(下)的更多相关文章

  1. redis数据类型及使用场景

    Redis数据类型  String: Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字. 常用命令:  set,get,decr,incr,mge ...

  2. Redis-cluster集群【第一篇】:redis安装及redis数据类型

    Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ...

  3. redis笔记总结之redis数据类型及常用命令

    三.常用命令 3.1 字符串类型(string) 字符串类型是Redis中最基本的数据类型,一个字符串类型的键允许存储的数据的最大容量为512MB. 3.1.1 赋值与取值: SET key valu ...

  4. redis介绍、安装、redis持久化、redis数据类型

    1.redis介绍  2.安装管网:https://redis.io/下载:wget -c http://download.redis.io/releases/redis-4.0.11.tar.gz解 ...

  5. Redis(三):Redis数据类型

    Redis数据类型目录导航: Redis五大数据类型 哪里去获取Redis常见数据类型操作命令 Redis键(Key) Redis字符串(String) Redis列表(List) Redis集合(S ...

  6. Redis数据类型和操作

    <"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...

  7. redis数据类型及订阅操作

    Redis数据类型详解 Redis键/值介绍 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如“foo”的简单字符串到一个JPG文件的内容都可以.空字符串也是有效k ...

  8. Redis数据类型Strings、Lists常用操作指令

    Redis数据类型Strings.Lists常用操作指令 Strings常用操作指令 GET.SET相关操作 # GET 获取键值对 127.0.0.1:6379> get name (nil) ...

  9. Redis数据类型:Hashes、Geo操作指令

    Redis数据类型:Hashes.Geo操作指令 Hashes常用操作指令 Redis Hashes是一个键值对的映射表,最对能存储2^32-1(约40亿)个键值对. HSET HGET HSET:将 ...

  10. redis深入学习(一)-----CAP、redis数据类型

    NoSQL数据库的四大分类 KV键值: memcache+redis 文档型数据库(bson格式比较多): MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在 ...

随机推荐

  1. AngularJS中的动画实现

    AngularJS 动画 AngularJS 提供了动画效果,可以配合 CSS 使用. AngularJS 使用动画需要引入 angular-animate.min.js 库. <script ...

  2. (转)The remote certificate is invalid according to the validation procedure

    If you get “The remote certificate is invalid according to the validation procedure” exception while ...

  3. easyui+nodejs+sqlserver增删改查实现

    用到的模块或者技术: Express: http://www.expressjs.com.cn/4x/api.html#express Easyui: http://www.jeasyui.com/d ...

  4. Cheatsheet: 2017 03.01 ~ 03.31

    Web New Year, New Blog Day 10 - Using JetBrains Rider with a .NET Core Console Application JavaScrip ...

  5. java 的数据库操作--JDBC

    一.java与数据库的交互 1.jdbc:java data base connectivity,java数据库连接.java的JDBC操作主要通过操作两个类进行连接操作:Connection 和 S ...

  6. document.getElementsByTagName

    var elems = document.forms[form_name].getElementsByTagName("INPUT"); getElementsByTagName( ...

  7. equals()重写

    ** 注意 ** 1.重写equals方法修饰符必须是public,因为是重写的Object的方法. 2.参数类型必须是Object. 3.重写equals方法后最好重写hashCode方法,否则两个 ...

  8. Python基础学习总结(三)

    4.if语句 If语句可以检查判定当前条件,并执行相应措施. if a in A: if a 条件: 执行命令1 4 else: 执行命令2 if判断条件还可以简写 if x: print('True ...

  9. What is the relation of theme and it's derived theme.

    You know, a theme can derive from other theme in two ways: xx.xxx implicit way and parent="xxx& ...

  10. Effective C++ .10,11 operator=的约定与注意

    1. 返回一个reference to *this 返回一个指向自身的引用符合惯例,可以进行如(a=c).modify()类似的操作,即可以形成链式操作,否则修改的只是一个临时对象.这个和Java中常 ...