快速掌握 redis 数据类型

Redis支持以下五种数据类型

String(字符串)

Hash(哈希表)

List(列表)

Set(集合)

zset(sorted set:有序集合)。


下面分别对以上5种数据类型进行介绍

1、字符串(String)

String 主要是用于一些比较简单的key/value存储,value是字符串类型,是redis中最常用的redis数据类型。 一个键最大能存储512MB

redis的string类型是二进制安全的,可以包含任何数据,比如jpg图片或者序列化的对象 。

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

常用命令:

  • SET

  • SETNX

  • SETEX

  • SETRANGE

  • MSET

  • MSETNX

  • APPEND

  • GET

  • MGET

  • GETRANGE

  • GETSET

  • STRLEN

  • DECR

  • DECRBY

  • INCR

  • INCRBY

  • SETBIT

  • GETBIT

实例:

   redis 127.0.0.1:6379> SET name "656463.com"

    OK

 redis 127.0.0.1:6379> GET name

  "656463.com"


2、哈希表(Hash)

Redis Hash 数据类型,其所存储的值是key/value的键值对,特别适合存储对象,例如存储用户信息,用户ID为redis中的key,各成员变量为存储值的内部key,成员变量的值为存储值的内部value

每个 hash 可以存储 2 32 -1 键值对(40多亿)。

常用命令:

  • HSET

  • HSETNX

  • HMSET

  • HGET

  • HMGET

  • HGETALL

  • HDEL

  • HLEN

  • HEXISTS

  • HINCRBY

  • HKEYS

  • HVALS

实例:

redis 127.0.0.1:6379> HMSET user:1 username 656463.com 656463 www.656463.com
OK
redis 127.0.0.1:6379> HGETALL user:1
1) "username"
2) "656463.com"
3) "656463"
4) "www.656463.com"
redis 127.0.0.1:6379>


3、链表(List)

Redis List 存储的值是有序的,可以在列表的头部或尾部插入数据。例如粉丝关注列表等。列表最多可存储 232 - 1元素 (4294967295, 每个列表可存储40多亿)。

常用命令:

  • LPUSH

  • LPUSHX

  • RPUSH

  • RPUSHX

  • LPOP

  • RPOP

  • BLPOP

  • BRPOP

  • LLEN

  • LRANGE

  • LREM

  • LSET

  • LTRIM

  • LINDEX

  • LINSERT

  • RPOPLPUSH

  • BRPOPLPUSH

实例:

 redis 127.0.0.1:6379> lpush test redis
    (integer) 1
    redis 127.0.0.1:6379> lpush test mongodb
    (integer) 2
    redis 127.0.0.1:6379> lpush test rabitmq
    (integer) 3
    redis 127.0.0.1:6379> lrange test 0 10
    1) "rabitmq"
    2) "mongodb"
    3) "redis"
    redis 127.0.0.1:6379>



4、集合(Set)

Redis中的Set数据结构主要特别是无序与去重  。也就是集合中不能用相同的元素,集合中的数据是无序的。  集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

常用数据

  • SADD

  • SREM

  • SMEMBERS

  • SISMEMBER

  • SCARD

  • SMOVE

  • SPOP

  • SRANDMEMBER

  • SINTER

  • SINTERSTORE

  • SUNION

  • SUNIONSTORE

  • SDIFF

  • SDIFFSTORE

实例:

        redis 127.0.0.1:6379> sadd test redis

    (integer) 1

    redis 127.0.0.1:6379> sadd test mongodb

    (integer) 1

    redis 127.0.0.1:6379> sadd test rabitmq

    (integer) 1

    redis 127.0.0.1:6379> sadd test rabitmq

    (integer) 0

    redis 127.0.0.1:6379> smembers test

    1) "rabitmq"

    2) "mongodb"

    3) "redis"


5、有序集(zset, Sorted Set)

Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么 可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

常用命令:

  • ZADD

  • ZREM

  • ZCARD

  • ZCOUNT

  • ZSCORE

  • ZINCRBY

  • ZRANGE

  • ZREVRANGE

  • ZRANGEBYSCORE

  • ZREVRANGEBYSCORE

  • ZRANK

  • ZREVRANK

  • ZREMRANGEBYRANK

  • ZREMRANGEBYSCORE

  • ZINTERSTORE

  • ZUNIONSTORE

实例:

        redis 127.0.0.1:6379> zadd test 0 redis

    (integer) 1

    redis 127.0.0.1:6379> zadd test 0 mongodb

    (integer) 1

    redis 127.0.0.1:6379> zadd test 0 rabitmq

    (integer) 1

    redis 127.0.0.1:6379> zadd test 0 rabitmq

    (integer) 0

    redis 127.0.0.1:6379> ZRANGEBYSCORE test 0 1000

    1) "redis"

    2) "mongodb"

    3) "rabitmq"

 

2019-03-14 23:56

redis知识点

redis快速入门

reids常用命令

redis数据结构

java_API_客户端

Jedis

Tlcache

redis_持久化

AOF

RDB

发布订阅(pub/sub)

redis_事件

redis事务

redis通讯协议

RESP(Redis Serialization Protocol)

redis高可用

redis哨兵

监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)

redis主从复制

  • 复制模式

    1. 主从复制
    2. 从从复制
  • 复制过程

    • slave向master发送sync命令;
    • master开启子进程执行bgsave写入rdb文件;
    • master发送缓存和RDB文件给slave;
    • master发送数据发送给slave完成复制;

redis集群(Redis_Cluster)

知识点

相关教程

更多

Redis 数据库内部结构-Redis数据类型

Redis 数据库内部结构 Redis 中的每个数据库,都由一个redis.h/redisDb 结构表示: typedef struct redisDb { int  id;  // 保存着数据库以整数表示的号码 dict *dict; // 保存着所有键值对数据,这个属性也被称为键空间(key space) dict *expires; // 保存着键的过期信息 dict *blocking_k

Redis概述

什么是Redis Redis是Remote Dictionary Server的缩写, Redis是一个开源、基于C语言、基于内存亦可持久化的高性能NoSQL的键值对数据库。在众多场合中均可使用Redis代替传统的数据库或者缓存系统。 与Memcached类似的NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题。 发展历史 2009年Salvatore Sa

JS数据类型

java数组类型 ==> 基本数据类型 和 引用数据类型.  js中 类型也分为两种 ==> 原始数据类型 和 对象数据类型. 与java一模一样. java中 基本数据类型有哪些? byte short int long float double boolean char  js中 原始数据类型有哪些?       number(数字,浮点型,整型)       string(js语

MongoDB数据类型

MongoDB的文件存储格式为BSON,同JSON一样支持往其它文档对象和数组中再插入文档对象和数组,同时扩展了JSON的数据类型.与数据库打交道的那些应用。例如,JSON没有日期类型,这会使得处理本来简单的日期问题变得非常繁琐。只有一种数字类型,没法区分浮点数和整数,更不能区分32位和64位数字。也没有办法表示其他常用类型,如正则表达式或函数。

JSON 数据类型


                            

Redis HyperLogLog 基数统计详解

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

Java基本数据类型

Java基本数据类型    变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。 Java的两大数据类型:    内置数据类型

FreeMarker基本数据类型

​Freemarker的基本数据类型【存储单值】有数字、字符串、boolean、日期。在这里直接用定义变量的方式来操作各种数据类型的输出。

Python 基本数据类型

简单的数据类型以及赋值 1)变量不需要声明 Python的变量不需要声明,你可以直接输入:>>>a = 10 那么你的内存里就有了一个变量a, 它的值是10,它的类型是integer (整数)。 在此之前你不需要做什么特别的声明,而数据类型是Python自动决定的。

快速了解Sentinel 如何使用

从定义资源、流量控制规则、熔断降级规则、系统保护规则、访问控制规则、热点规则、查询修改规则、异常和监控等方面快速了解Sentinel 如何使用

快速了解shiro

1.1  什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。 1.2  为什么要学shiro 既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 shiro使用广泛,shiro可以运行在we

快速了解mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MyBatis是被称为一个数据映射和映射需要的类的属性和数据库中的表的列之间的参数和结果。

如何快速做一个山寨的实时“大数据”处理

前言    为啥写这篇文章?因为我现在做的这套实时计算系统在公司里很难玩下去了。去年年初来到ctrip,主要就是做两个实时应用,一个是实时报警,功能是做出来了,但应用效果不好;一个是XXX(敏感应用,不敢写出来,以XXX代替),也是实现了功能需求,但想继续按自己的思路往下走是不可能了,我捉急的表达能力很难让上头去理解实时计算和传统的request-response方式的应用不同点在哪里,为啥要这么

Redis 哈希(Hash)详解

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。

快速了解Gson

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象。GSON核心jar包不到1M,非常精简,但提供的功能无疑是非常强大的,如果使用JDK自带的JSON解析API,使用起来相对比较繁琐一点,而且代码量较多。   Gson使用简单,可以实现含有多层引用、继承的java对象与jso

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案