`
haoran_10
  • 浏览: 443373 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

redis(2)、redis数据类型

阅读更多

  • 一、字符串(Strings)
  • 二、列表(Lists)
  • 三、哈希(Hashes)
  • 四、集合(Sets)
  • 五、有序集合(Sorted sets)
  • 六、位图(bitmaps)
  • 七、HyperLogLogs
  • 八、地理位置(geospatial) 还在开发中

零、redis key
redis key是二进制安全的,所有的二进制序列都可以做为key值,空字符串也可以。
使用规则&建议:
(1)、key的长度不要太长,占内存,查找消耗大。
(2)、key的长度太短也不好,不利于阅读。
(3)、制定好key书写规范,约定好,利于开发,利于阅读。
(4)、key值设置要低于512MB。

一、字符串(Strings)
字符串结构是redis最简单的一种类型,Memcached缓存数据库也支持这一种(事实上Memcached是追崇极简设计哲学)。
使用SET  GET 可以操作strings

tips:
a、SET 结构可以是任意值
b、不能超过512M
(1)、setnx
当前key存在时,设置不会成功,返回0
当前key不存在时,设置成功,返回1
 这个命令可以构建分布式锁,而且redis官网并且给出了方案,而且方案很有借鉴性,关于基于redis setnx 构建分布式锁会单独研究。
 (2)、当value是整数类型时,有一些专门的原子性的指令来操作这些数据
 这个命令可以做一些统计性的工作,并且是原子性,多个客户端同时操作也是安全的。
incr、decr、incrby、decrby。其实这四个命令原理都一样,只不过换个样子罢了。
 (3)、对key设置新的值,并且返回原先旧的值
 (4)、MSET MGET 批量操作
 mset key1,val1...  后面key和value对应好
mget key1,key2...参数为一个数组,返回值也是一个数组
 (5)、EXISTS 是否存在某key,DEL 删除某key


 初次操作是存在的,删除之后,在查询就不存在了。
 (6)、TYPE 查看key对应的值的数据类型
 (7)、expire TTL  PERSIST 
expire 生效时间,时间粒度可以单独设置
TTL 查看key剩余时间
PERSIST  把key设为永久
 
 
当我设置key之后,并且设置key5秒后失效。5秒内查看key时,是存在的,5秒后查询key,已经不存在了,已经失效了。
 
 设置key60秒后失效,12秒过后查看key的时效。

二、列表(Lists)
redis的列表是基于链表实现的,这样添加数据和删除数据的时候速度非常迅速,但是基于下标索引查询数据的时候则会慢很多,如果有这样的需要使用sorted set。
(1)、使用LPUSH 可以在列表的左端插入数据,RPUSH可以在列表的右端插入数据,    LRANGE可以从左端查询数据。
LPUSH key value [value ...]  从左端插入数据,可以同时插入多个数据

RPUSH key value [value ...]  从右端插入数据,可以同时插入多个数据

LRANGE key start stop        从左端开始插入数据,start是开始的坐标,stop是结束的坐标,都可以为负数。负数则代表反着方向。
 ---->[c][b][a]  从左边先进入的元素排在右端。
 (2)、LPOP,RPOP,这两个指令,可以从list中取出数据,很有用处
LPOP key  从key中左端取出list的一个数据,并且返回
RPOP key 从key中右端取出list的一个数据,并且返回 

 
 

从左边取数据,则为c。
可以直接理解为队列。
 (3)、基于redis list push pop这几组命令,可以构建异步的生产者消费者系统。
生产者线程使用LPUSH把需要处理的数据插入队列中,消费者线程只要观察到队列中有数据,就可以取出数据就行处理。
关于基于redis list构建生产者消费者系统,也会另起篇幅进行研究。
 (4)、也可以基于redis list构建分页系统。
存储数据之后,使用lrange 命令构建分页系统。
 (5)、LTRIM 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
LTRIM key start stop   start 是开始下标  stop是结束下标
 (6)、阻塞的list操作

BRPOP key [key ...] timeout  如果key对应的list中没有数据,则会一直阻塞。如果设置了超时时间,在超时时间前一直阻塞。

BLPOP 同理。
可以和push 结合着用,消费者阻塞式去数据。不建议使用。

 三、哈希(Hashes)
hash顾名思义,就是键值对。
有四个最常用的命令
 HSET key field value   
HGET key field
HMSET key field value [field value ...]
HMGET key field [field ...]
一个key下面,有N个键值对,类似于一个hashmap,有多个key和value
hmset hmget 多个参数进行操作


 
 strings 的一些纯粹的set get 操作,尽量转移到hash数据,内存低,效率高。

 四、集合(Sets)
redis sets 是无序的集合,可以通过SADD 命令插入数据,主要提供了检查某个value是否存在该sets中,两个sets之间的交集,并集,差集,
基于这个特性可以用在一些关系相关的应用系统。比如微博中A和B共同关注的人等等。
 (1)、SADD key member [member ...]  往key对应的sets添加元素,可以添加多个元素。
(2)、SMEMBERS key  查询key对应的sets中所有的元素
(3)、SISMEMBER key member 查询key对应的sets中是否拥有member这个元素
(4)、SPOP key [count]  随机从key对应的sets中取出一个元素,并且删除。后面[count]参数,3.0版本还不能用,以后的版本会支持。

(5)、SRANDMEMBER key [count] 随机从key对应的sets中取出一个元素,但是不删除。后面[count]参数,3.0版本还不能用,以后的版本会支持。

(6)、SINTER key [key ...] 从多个key对应的sets中取交集
(7)、SUNIONSTORE destination key [key ...] 从多个key对应的sets中取并集,并且赋予一个新的sets
(8)、SDIFF key [key ...] 取多个sets差集 

 


五、有序集合(Sorted sets)

sorted sets 是sets 和hashs的混合,功能也比较强大。
关键在于我们在插入sorted sets集合时,可以对某个元素进行设置score,这就是为什么像hashs,就像键值对一样绑在一起。
sorted seds 是基于跳跃表和hash表,时间复杂度为O(log(N)) ,不过也是值得的,插入一个元素,就已经排好序了。这对于构建排序系统,非常有用,因为排序系统一旦排好序之后,变更频率较低,读取较多。
sorted sets 基于score的排序规则如下:
  • 分数越大,排序靠前
  • 分数相同,按照元素的strings的英文字母升序排列,那个元素的英文字母在前,那个元素就排在前。
(1)、ZADD key score member [score member ...]  往key对应的sorted sets 往添加元素,可以添加多个
(2)、ZRANGE key start stop [WITHSCORES] 根据下标索引,返回数据
(3)、ZREMRANGEBYSCORE key min max 从sorted sets 中删除元素根据min~max之间
(4)、ZRANK key member 返回某个元素在sorted sets中的排名
(5)、ZREVRANK key member 返回某个元素在sorted sets中的倒叙排名

六、位图(bitmaps)
效率最高的存储方式,精通之后,如有打通任督二脉。。。不扯了,http://www.cnblogs.com/riskyer/p/3228651.html

七、HyperLogLogs
 
  • 大小: 2.1 KB
  • 大小: 6.1 KB
  • 大小: 9.3 KB
  • 大小: 3.8 KB
  • 大小: 5.5 KB
  • 大小: 7.3 KB
  • 大小: 5.4 KB
  • 大小: 10.3 KB
  • 大小: 5.6 KB
  • 大小: 10.7 KB
  • 大小: 2.3 KB
  • 大小: 14.4 KB
  • 大小: 36.1 KB
0
0
分享到:
评论

相关推荐

    Redis学习资料

    Redis学习手册 Hash数据类型 doc Redis学习手册 Key操作命令 doc Redis学习手册 List数据类型 doc Redis学习手册 Set数据类型 doc Redis学习手册 Sorted Sets数据类型 doc Redis学习手册 String数据类型 doc Redis...

    Redis数据类型视频

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    Redis基础架构与数据类型 Redis键值操作与命令 Redis字符串与列表数据结构 Redis哈希与集合数据结构

    Redis基础架构与数据类型 Redis键值操作与命令 Redis字符串与列表数据结构 Redis哈希与集合数据结构 Redis排序集合与使用场景 Redis持久化策略与RDB Redis持久化策略与AOF Redis主从复制与集群配置 Redis事务与Lua...

    Redis集群数据迁移操作文档

    《Redis集群数据迁移实战指南》 在IT领域,数据迁移是一项关键任务,特别是在使用Redis这样的高性能内存数据库时。本文将详细介绍如何进行Redis集群的数据迁移,包括全量和增量数据迁移,以及离线迁移的方法,主要...

    Redis实战_Redis实战中文完整版_Redis快速入门_Redis数据类型及操作_Redis常用

    2. **Redis数据类型及操作**:这是Redis的核心部分,包括五大数据类型: - **字符串(String)**:最基础的数据类型,支持设置、获取、增加、减少等操作。 - **哈希(Hash)**:用于存储键值对集合,适用于存储对象。 ...

    redis存储二进制数据测试代码

    Redis,作为一个高性能的键值对数据存储系统,不仅支持简单的字符串、整数和浮点数等数据类型,还能够处理二进制数据。在实际应用中,存储和处理二进制数据是常见的需求,比如图片、音频、视频的元数据或者数据库的...

    数据结构Redis中数据类型对应的数据结构.pdf

    在Redis中,键的数据类型始终是字符串,而值的数据类型包括字符串、列表、字典、集合和有序集合。 1. 字符串(String):这是最基础的数据类型,对应数据结构是简单的字符串。在Redis中,字符串可以用来存储各种...

    redis可视化客户端工具

    2、根据喜好管理redis数据 3、管理redis数据,包括: 新的redis数据:字符串,列表,哈希,集,有序集合 重命名redis数据 删除redis数据 更新Redis数据 剪切,复制粘贴redis数据 导入,导出redis数据 搜索...

    php 操作redis五大数据类型实例

    本资源主要是php 操作redis五大数据类型的实例,供参考 redis安装请移步 https://blog.csdn.net/xxs18326183038/article/details/80599080

    c++ 操作redis数据库

    Redis是一个开源的、基于内存的数据结构存储系统,它支持多种数据类型,如字符串、哈希、列表、集合、有序集合等,且具有高速读写能力。而C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程...

    Redis全套学习笔记-带章节目录-114页.pdf

    * Redis命令大全包括了各种数据类型的操作命令,如键命令、字符串命令、列表命令、集合命令、哈希命令和有序集合命令等。 Redis 5大数据类型 * 字符串(String):字符串是Redis最基本的数据类型,使用set命令设置...

    java 对Redis的导入和导出

    2. **导出Redis数据**: 导出主要通过遍历Redis的所有键并获取对应值的方式实现。可以使用`keys()`命令获取所有键,然后根据键类型调用相应的方法获取值,如`get()`、`hgetAll()`等。将这些键值对写入文件,可以...

    REDIS_redis的工具包_redisinlabview_labviewredis_labview调用redis_redis

    它支持丰富的数据类型,包括字符串、哈希表、列表、集合和有序集合。在LabVIEW(Laboratory Virtual Instrument Engineering Workbench)环境中,可以利用特定的工具包来调用Redis服务,实现数据的存取和处理。本文...

    1.1、redis安装和基本数据类型1

    在本节中,我们将探讨 Redis 的安装过程以及它的基本数据类型。 首先,Redis 的安装在 Windows 系统上可以通过下载 Redis 的二进制文件完成。在 `D:\ProgramFiles\minixiao\redis` 目录下,执行 `redis-server.exe ...

    C#操作Redis明细内容 C#调用redis c#使用redis业务 C# Redis操作类 C#中Redis封装的类 C#

    Redis 支持的数据类型有哪些?1)String(字符类型) 2)Hash(散列类型) 3)List(列表类型) 4)Set(集合类型) 5)SortedSet(有序集合类型,简称zset) 6)Bitmap(位图) 7)HyperLogLog(统计) 8)GEO(地理) 包括c#引用...

    Redis 数据类型.pdf

    Redis 数据类型

    windows 64 redis3,2

    Redis 支持五种基本数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每种类型都有其特定的应用场景,如字符串可用来存储简单值,哈希适合存储对象,列表可实现消息...

    如何高效地向Redis插入大量的数据(推荐)

    最近有个哥们在群里问,有一个日志,里面存的是IP地址(一行一个),如何将这些IP快速导入到Redis中。 我刚开始的建议是Shell+redis客户端。 今天,查看Redis官档,发现文档的首页部分...

    postgresql数据快速倒入redis

    3. **数据预处理**:在导入前对PostgreSQL查询结果进行预处理,如数据类型转换,可以减少Redis端的计算开销。 4. **优化网络传输**:压缩数据再传输,减少网络带宽的占用,提升传输速度。 接下来,我们关注Redis。...

Global site tag (gtag.js) - Google Analytics