`
TemplarAssassin
  • 浏览: 7407 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

redis支持的数据类型详解以及用途

阅读更多

 

                                        redis 支持的数据类型详解以及用途

 

         redis 支持多种数据类型,常见的有  String ,List  Set , Sorted set ,Hash等。下面就以上几种类型的特点和用途进行说明 。

 

String 类型.

   

    string 类型是二进制安全存储的,通常用以保存 图片,css文件等静态文件。

    string类型的内存结构:

    struct sdshdr{

           long len;

           long free;

           char buf[];

    };

    buf数组:字符串的尸体,保存字符串的内容  len:记录buf的长度,free:记录buf还有多少空间可用。

 

     string类型redis中常用的命令:

          set key value   设置key 和value

          get key    获取key的值

          mset key1 value1 key2 value2  设置多个key 和value

          mget key1 key2     获取多个key 的值

          incr key     对key对应的值自增1

          decr key    对key对应的值自减1

 

     用途除了储存静态文件外,根据incr 的自增特性,可以做统计用。如:统计网站的访问次数

 

List 类型:

     list 数据类型是指 key对应的 value 是一个双向链表结构,所以list类型支持所有链表的操作。

 

     常用的命令:

          lpush key string  给list头部添加一元素

          rpush key string  给list尾部添加一个元素

          lpop key    返回获取头部的元素   并移除这个元素

          rpop key     返回获取尾部的元素 并移除这个元素

 

     List 的用途:

          大致常用的有,如:微博的“我关注的列表””就可以用list去存储,userName为key  关注的东西为value,当然,论坛中的回帖也是可以这样处理的。这样的用法是比较常见的。

list也可以做消息队列,从而减轻数据库压力,充分用到了 rpush 和lpop 。尾部插入,头部获取并移除。构建消息队列。

 

Set类型:

        set数据类型是一种无序的集合,正好和list形成了鲜明的对比。在redis内部,Set是通过HashTable实现的。所以查找元素的时间复杂度是O(1). Set 的优势在于,快速的查找元素是否存在,用于记录一些不能重复的数据。

 

     Set 常用命令:

          sadd key value  添加一个string元素到key对应的set集合

          sismember key value  判断value 是否存在key对应的set集合内,存在返回1  不存在返回0  

          smembers key   返回key对应的set集合的所有元素,结果是无序的。

 

     Set的用途:

          set类型通常是用于记录做过某些事情,或者判断是否存在。如: 可以将注册的用户名放到set中,在注册是就可以通过redis set 快速的判断用户名是否存在了。再如: 投票统计,假如每天每个用户只能参加一次某个活动的投票,那么我们就可以通过set 的命令 sismember 判断是否投过票,当然通过得到的结果集合,就可以看到用户的投票情况  set  smembers。

 

Sorted Set 类型

          

          sorted set类型和set类型很相似。都是strng类型元素的集合。不同的是 sorted set 属于有序集合。

sorted set 通过一个double类型的证书 score 进行排序的。 sorted set中,通过SkipList(跳跃表) 和 HashTable组合完成的。SkipList负责排序,HashTable负责保存数据。保证了时间复杂度的 O(1)

 

     Sorted Set常用的命令

           zadd key score value   添加元素value 到集合,元素在集合中存在的则更新对应的score

           zincrby  key incr value    增加对应value元素的score值

           zrange key start end       从集合中指定 start  end 返回score 的顺序排序列表

           zrevrange key star end    从集合中指定 start  end 返回score 的逆序排序列表。

           zcard key                         返回集合中元素的个数

 

     Sorted Set 用途:

           Sorted set 可以做set 能做的,也可以做set 不能做的,比如说: 构建一个具有优先级的消息队列。

再比如: 排行榜应用中,按“顶帖“次数排序, 可以将排序的值设置成sorted set中的 score 。将具体的数据设置成相应的value 。 用户每次点击”顶贴“按钮时。只需要zadd命令修改score的值。

 

Hash类型。

      hash类型时一个key 对应一个hashTable 。添加,查找,修改,删除操作的时间复杂度都是O(1). 

hash 类型适合应用于存储对象,新建一个hash对象的时候,为了节省内存,redis 使用zipmap 进行存储数据,这个zipmap并不是真正的hashtable ,添加,删除等操作的时间复杂度都是O(n),但是相比于一般的hashtable ,zipmap节省了不少内存。

 

     hash 类型常用的命令:

          hset key field value  设置key对应的hashtable 中对象field 的值     

 

          hget key field             获取 key对应的hashtable 中 field的关联的值

          hexists key field         判断field域 是否存在

          hgetall key                   获取key对应的整个hashtable 的所有域和关联的值

 

     Hash类型的用途:

              比如:存储用户信息对象,用户id 作为key   field 域 都有 name age sex 等名称,每个field对应的value --name的数据,age的数据,sex数据;

 

          如果field 或者value的大小超过一定的限制,那么redis在内部自动将zipmap转化为正常的hashTable ,配置文件中,hash-max-zipmap-entries 和  hash-max-zipmap-value 这两个设置 对应的限制。

 

 

分享到:
评论

相关推荐

    redis命令详解

    通过上述介绍,我们可以看出 Redis 提供了非常丰富的数据类型和操作命令,这些功能极大地扩展了 Redis 的应用场景,使其不仅能够作为高速缓存服务器,还能作为消息队列、实时数据分析等多种用途的存储解决方案。

    Redis 数据类型的详解

    Redis 是一个高性能的键值存储系统,它支持五种核心数据类型,分别是字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set,简称 zset)。这些数据类型的设计使得Redis能够处理多种...

    尚硅谷redis视频教程更新

    3. **数据类型详解**:对Redis支持的各种数据类型进行深入讲解,包括每种数据类型的使用场景及示例代码。 4. **高级特性**:例如事务管理、Lua脚本编写、集群部署等高级特性介绍。 5. **实战项目**:结合实际案例,...

    redis面试题Redis 常见面试题.docx

    #### 四、Redis数据类型及其应用场景 **4.1 常见数据类型** - **String(字符串)**:适用于缓存对象、常规计数、分布式锁等场景。 - **Hash(哈希)**:适用于缓存复杂对象,如用户信息、商品详情等。 - **List...

    redis安装以及测试文档

    - **切片连接**: 使用`ShardedJedis`实现数据分片, 支持跨多个Redis实例的操作。 - **切片连接池**: 使用`ShardedJedisPool`管理多个`ShardedJedis`实例。 通过以上步骤, 我们不仅成功安装了Redis服务器, 还搭建...

    redis-win-2.8.2101

    7. 数据类型操作:Redis支持五大数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合)。每种类型都有其独特用途,例如,String适合存储简单数据,List可以实现消息队列...

    redis必备书籍

    - **定义:** 字符串是 Redis 最基本的数据类型。 - **用途:** 字符串可以用作键值对中的值。 - **特点:** 字符串简单易用,支持多种字符串操作命令。 **3.3 哈希表** - **定义:** 哈希表是 Redis 中用于存储字段-...

    Redis 中文文档

    Redis 可以用于缓存、消息队列等多种场景,因其高速读写性能和丰富的数据类型而在现代应用开发中非常流行。 #### 二、Redis文档概述 Redis 的官方文档非常详尽,包含了从基础概念到高级特性的详细介绍。下面将根据...

    Redis教程.pdf

    #### 二、Redis 数据类型详解 - **String (字符串)**: - 基础数据类型,对应一个 key-value 键值对。 - 二进制安全,可以存储任何形式的数据。 - 值的最大大小为 512 MB。 - **Hash (哈希)**: - 字段和值的...

    redis源码日志

    - **第5章:redis数据结构redisObject** - **结构**: 详细介绍`redisObject`类型及其字段。 - **属性**: `type`、`encoding`等属性的含义与用途。 - **第6章:redis数据结构sds** - **结构**: 简介`sds`(Simple...

    redis实例

    - 数据类型:Redis支持五种基本数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每种类型都有其特定的用途,例如字符串适用于存储单个值,哈希用于存储键值对结构,列表...

    Redis实战_2_redis_

    - **数据类型**:Redis支持五大数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set),每种类型都有其特定的用途。 - **持久化**:为了保证数据不丢失,Redis提供了RDB(快照...

    redis-cheatsheet-v1

    本文将深入解析Redis命令行工具的使用方法,包括启动服务器、运行客户端以及各种核心命令的应用场景,帮助您快速掌握Redis的基本操作与高级功能。 #### 启动Redis服务器 启动Redis服务器是使用Redis的第一步。进入...

    redis入门.docx

    #### 二、数据类型详解 **1. 字符串(String)** - **定义**:Redis中最基础的数据类型,存储单个键值对。 - **用途**:适用于存储简单的文本数据,如计数器、简单的配置项等。 - **命令示例**: - `SET key value...

    Win10配置redis服务实现过程详解

    以下将详细讲解Win10上安装和配置Redis服务的步骤,以及如何确保其正常运行。 1. **下载Redis安装包**: Redis官方并未提供Windows版本,因此我们需要从GitHub上的微软归档仓库下载适用于Windows的Redis版本。你...

    redis相关内容redis相关内容redis相关内容redis相关内容redis相关内容redis相关内容

    3. 数据类型:介绍Redis支持的五大数据类型(字符串、哈希、列表、集合、有序集合)及其使用方法。 4. 命令操作:列举常见的Redis命令,如GET、SET、INCR、LPOP、SADD等,以及它们的用途和示例。 5. 特性与功能:...

    Redis命令实践.pdf

    Redis支持五种主要的数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。下面详细介绍这些数据类型的常见操作命令: 1. **字符串(String)** - **设置和获取值**: ```bash ...

    通用redis命令【重点】

    除了以上提到的数据类型特有命令外,还有一些适用于所有Redis数据类型的通用命令。 ##### 常用命令 - **`KEYS pattern`**:获取所有与模式匹配的键。可以使用通配符`*`匹配任何数量的字符,`?`匹配单个字符。 - **...

    Redis开发的教程.doc

    Redis 支持多种数据类型,每种数据类型都有其特定的用途和操作命令: - **字符串(Strings)**: 最基本的数据类型,适合存储简单的键值对数据。 - **列表(Lists)**: 有序的数据集合,适用于消息队列等场景。 - **...

    Redis部署向导与实践

    **数据类型**: - **字符串(String)**:最简单的键值对形式,可以用来存储任何文本数据。 - **哈希(Hash)**:用于存储键-值对的集合,适合于存储对象。 - **列表(List)**:存储多个元素的有序集合,适合用于消息队列...

Global site tag (gtag.js) - Google Analytics