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. stm32f103各个型号芯片之间程序移植(stm32的兼容问题)

    1.stm32f103系列的各个型号的芯片差别一般不大,都是一些flash大小不一样,一般是向下兼容(大容量芯片兼容中容量芯片)还有晶振大小不一样.                           ...

  2. 【个人经历】记自己的第一次GitHub开源代码共享经历

    题记: 自己做程序员快三年有余了,感觉自己和刚入职相比确实有了不少进步,当然三年要是不进步那不就傻了吗,有时候我也在想,我在这三年里留下了什么,当然也不是说有多么高尚的想法,就是以后对别人介绍自己的时 ...

  3. Ubuntu 16.04下 - vi编辑器使用【backspace】无法删除

    参考:https://blog.csdn.net/leiwangzhongde/article/details/83339589

  4. js判断字符串出现的次数

    // 判断substr字符串在str中出现的次数 isIgnore是否忽略大小写! function countSubstr(str, substr, isIgnore) { var count; v ...

  5. [TSQL|SQLSERVER|MSSQL数据库] 将数据库文件与日志附加到数据库引擎,以及转移数据库文件位置

    附加: USE [master] GO CREATE DATABASE [database_name] ON ( FILENAME = N'C:\Data\<database name>. ...

  6. Java中对文件的序列化和反序列化

    public class ObjectSaver { public static void main(String[] args) throws Exception { /*其中的 D:\\objec ...

  7. 关于Entity Framework更新的几种方式以及可能遇到的问题(附加类型“Model”的实体失败,因为相同类型的其他实体已具有相同的主键值)在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为

    在日常使用Entity Framework中,数据更新通常会用到.下面就简单封装了一个DBContext类 public partial class EFContext<T> : DbCo ...

  8. 剑指offer 10矩形覆盖

    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形.请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法 java版本: public class Solution { publ ...

  9. November 10th 2016 Week 46th Thursday

    Live like you were dying, love because you do. 生如将逝,爱自本心. When faced with our darkest hour, hope is ...

  10. 安装ubuntu server时可能会需要的配置

    1.修改源 笔者比较习惯用163的源,配置如下: sudo vi /etc/apt/sources.list 163源为: deb http://mirrors.163.com/ubuntu/ pre ...