集合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. Java内存区域和对象的创建

    文章绝大部分内存摘抄自<深入理解Java虚拟机>,结合了小部分个人理解如果有什么错误,还望指出,如果涉及到侵权,联系博主,立马删除,再次感谢<深入理解Java虚拟机>的作者-周 ...

  2. 一、IOC和DI的概念

    IOC---Inversion of Control (控制反转) 在java中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你对象内部直接控制. 谁控制谁,控制什么  -->IOC ...

  3. Linux From Scratch(从零开始构建Linux系统,简称LFS)(一)

    一. 准备工作 1. 需要一个Linux宿主系统,例如早先版本的 LFS,Ubuntu/Fedora,SuSE 或者是在你的架构上可以运行的其它发行版 如果想实现Win7与Linux双系统,可参考我的 ...

  4. 【原创】Hadoop的IO模型(数据序列化,文件压缩)

    数据序列化 我们知道,数据在分布式系统上运行程序数据是需要在机器之间通过网络传输的,这些数据必须被编码成一个个的字节才可以进行传输,这个其实就是我们所谓的数据序列化.数据中心中,最稀缺的资源就是网络带 ...

  5. 第十三章.MySQL数据库与JDBC编程(下)

    JDBC的典型用法: JDBC4.2常用接口和类简介: DriverManager:用于管理JDBC驱动的服务类,程序中使用该类的主要功能是获取Connection对象,该类包含如下方法: publi ...

  6. java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.yunweather.app.db.YunWeatherDB.loadProvinces()' on a null object reference

    NullPointerException:查看自己的什么地方是否对空指针进行了操作 Attempt to invoke virtual method 'java.util.List com.yunwe ...

  7. java设计模式之装饰者模式学习

    装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案. 装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为 ...

  8. CSS之after与before的content 和 attr 配合使用

    content 和 attr 配合使用 如果你不想把content内容在CSS里写死,那你可以使用attr表达式来从页面元素中动态的获取内容: /* <div data-line="1 ...

  9. 如何检测页面是否有重复的id属性值

    <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta nam ...

  10. 快速数组对象取值与数组映射新数组--array.map

    array.map(callback,[ thisObject]); 1.map方法的作用不难理解,“映射”嘛,也就是原数组被“映射”成对应新数组 a)array.map(()=>值); [1, ...