string(字符串)

  • 存储最简单的key-value结构。
  • value可以是字符串、整数或者浮点数。
  • 可以对整个字符串或者字符串的一部分执行操作;
  • 对整数和浮点数执行自增或者自减操作。

使用场景:

  • 常规key-value缓存应用;

list(列表)

  • 一个链表,链表上的每个节点都包含了一个字符串,字符串可以重复;
  • 可以从链表的两端推入或者弹出元素;
  • 根据偏移量对链表进行修剪;
  • 读取单个或多个元素;
  • 根据值查找或者移除元素。

使用场景:

  • 最新消息排行等功能;
  • 消息队列;
  • 关注列表,粉丝列表;

set(集合)

  • 包含字符串的无序收集器,并且被包含的每个字符串都是独一无二,各不相同的,即不能重复;
  • 可以添加、获取、移除单个元素;
  • 检查一个元素是否存在于集合中;
  • 计算交集、并集、差集;
  • 从集合里面随机获取元素。

使用场景:

  • 共同好友,共同喜好,二度好友;
  • 统计网站访问IP(利用唯一性,统计访问网站的所有独立IP);
  • 好友推荐(好友推荐时,根据tag求交集,大于某个阈值就可以推荐);

hash(散列)

  • 包含键值对的无序散列表,键不能重复;
  • 可以添加、获取、移除单个键值对;
  • 获取所有键值对。

使用场景:

  • 存储用户信息(能单独修改用户某一属性信息);

zset(有序集合)

  • 有序集合的键被称为成员,每个成员都是各不相同的;
  • 而有序集合的值被称为分值,分值必须为浮点数;
  • 有序集合是字符串成员与浮点数分值之间的有序映射,元素的排列顺序由分值的大小决定;
  • 可以添加、获取、删除单个元素;
  • 根据分值范围或者成员来获取元素;
  • 有序集合是redis里面唯一一个既可以根据成员访问元素(这一点和散列一样),又可以根据分值以及分值的排列顺序来访问元素的结构;

使用场景:

  • 排行版;
  • 带权重的消息队列;

redis五种数据结构及使用场景的更多相关文章

  1. redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  2. 2.Redis五种数据结构

    2.Redis五种数据结构2.1 预备2.1.1 全局命令2.1.2 数据结构和内部编码2.1.3 单线程架构2.2 字符串2.2.1 命令2.2.2 内部编码2.2.3 典型使用场景2.3 哈希2. ...

  3. 【Redis】redis 五种数据结构详解(string,list,set,zset,hash)

    redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...

  4. Redis(一)、Redis五种数据结构

    Redis五种数据结构如下: 对redis来说,所有的key(键)都是字符串. 1.String 字符串类型 是redis中最基本的数据类型,一个key对应一个value. String类型是二进制安 ...

  5. redis 五种数据结构详解(string,list,set,zset,hash),各种问题综合

    redis 五种数据结构详解(string,list,set,zset,hash) https://www.cnblogs.com/sdgf/p/6244937.html redis 与 spring ...

  6. redis五种数据类型的使用场景

    string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

  7. Redis五种数据结构(Windows Server)

    1.Redis的五种数据结构 这里推荐大家在命名redis的key的时候最好的加上前缀,并且使用 :来分割前缀 ,这里在使用可视化工具查看的时候就比较好区分,比如我的的前缀是 Demo:test:(一 ...

  8. Redis 五种数据结构详解(string,hash,list,set,zset)

    一.五种数据结构: 1. String--字符串 String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候e ...

  9. Redis五种数据结构简介

    Redis五种结构 1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 字符 ...

随机推荐

  1. VMware与Hyper-V

    前段时间在Windows10上安装Hyper-V,使用docker时,提示要卸载VMware 今天重新安装VMware时,提示: 根据连接进去:https://kb.vmware.com/s/arti ...

  2. 一步一步pwn路由器之radare2使用实战

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前文讲了一些 radare2 的特性相关的操作方法.本文以一个 c ...

  3. Eclipse创建第一个Servlet(Dynamic Web Project方式)、第一个Web Fragment Project(web容器向jar中寻找class文件)

    创建第一个Servlet(Dynamic Web Project方式) 注意:无论是以注解的方式还是xml的方式配置一个servlet,servlet的url-pattern一定要以一个"/ ...

  4. hibernate的延迟加载和抓取策略

    一,延迟加载 1.实体类延迟加载 通过代理机制完成,由javassist类库实现运行时代理,修改实体类的字节码实现了运行时代理     <class lazy="true|false& ...

  5. Executors相关的类(线程池)

    一.概述 Java是天生就支持并发的语言,支持并发意味着多线程,线程的频繁创建在高并发及大数据量是非常消耗资源的,因为java提供了线程池.在jdk1.5以前的版本中,线程池的使用是及其简陋的,但是在 ...

  6. spring配置datasource

    1.使用org.springframework.jdbc.datasource.DriverManagerDataSource  说明:DriverManagerDataSource建立连接是只要有连 ...

  7. TableView的cell加载倒计时重用问题解决方案

    TableView的cell加载倒计时重用问题解决方案 效果 说明 1. 写过类似需求的朋友一定知道,TableView上面加载倒计时功能会遇到复杂的重用问题难以解决 2. 本人提供一种解决思路,高效 ...

  8. 利用Linode面板Clone克隆搬家迁移不同VPS数据及利用IP Swap迁移IP地址

    在众多海外VPS服务商中,老蒋个人认为Linode提供的VPS方案和性价比还是比较高的,尤其目前基础1GB方案仅需10美元每月且全部是SSD固态硬盘,无论是流量还是硬盘大小,基本上可以满足我们大部分用 ...

  9. SVN那些事

    非原创,引用于青松世界博客,最近在使用svn,因为方便复制内容在这查看.原地址 https://www.cnblogs.com/Rambo635755402/p/5549447.html Totois ...

  10. 【笔记】python的sqlalchemy数据库连接池原理的说明

    sqlalchemy数据库连接池的使用方式是延迟初始化,就是说一开始你调用create_engine(...)后创建的那个数据库池是空的,你后面通过session.connection()或者engi ...