Redis 数据类型

Redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(sorted set:有序集合)。

String(字符串)

string时redis最基本的类型,可以理解为与Memcached一模一样的类型,一个key对应一个value。string类型时二进制安全的,意思是redis的string可以包含任何数据,比如:jpg图片或者序列化的对象。string类型是redis最基本的数据类型,一个key最大能存储512M。

实例

> SET name "Hello"
OK
> GET name
"Hello"

在以上实例中我们使用了Redis的SET和GET命令,键为name,对应的值为"Hello",注意:一个键最大能存储512M。

Redis 字符串命令

SET key value:设置指定key的值;
GET key:获取指定key的值;
GETRANGE key start end:返回key中字符串的字串;
GETSET key value:将给定key的值设置为value,并返回key的旧值(old value);
GETBIT key offset:对key所存储的字符串值,获取指定偏移量上的位(bit);
MGET key1[key2...]:获取所有(一个或多个)给定key的值;
SETBIT key offset value:对key所存储的字符串值,设置或清除指定偏移量上的位(bit);
SETEX key seconds value:将value关联到key,并将key的过期时间设为seconds(以秒为单位);
SETNX key value:只有在key不存在时设置key的值;
SETRANGE key offset value:用value参数覆写给定的key所存储的字符串值,从偏移量offset开始;
STRLEN key:返回key所存储的字符串值的长度;
MSET key value [key value ...]:同时设置一个或多个key-value对;
MSETMX key value [key value ...]:同时设置一个或多个key-value对,当且仅当所有给定key都不存在;
PSETEX key milliseconds value:这个命令和SETEX命令相似,但它以毫秒为单位设置key的生存时间,而不是像SETEX命令那样,以秒为单位;
INCR key:将key中存储的数字值增1;
INCRBY key increment:将key所存储的值加上给定的增量值(increment);
INCRBYFLOAT key increment:将key所存储的值加上给定的浮点增量值(increment);
DECR key:将key中存储的数字值减1;
DECRBY key decrement:key所存储的值减去给定的减量值(decrement);
APPEND key value:如果key已经存在并且是一个字符串,APPEND命令将指定的value追加到该key原来值(value)的末尾;

Hash(哈希)

Redis hash是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

实例

> HMSET myhash name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
OK
> HGETALL myhash
1) "name"
2) "redis tutorial"
3) "description"
4) "redis basic commands for caching"
5) "likes"
6) "20"
7) "visitors"
8) "23000"

实例中我们使用Redis HMSET设置了redis的一些描述信息(name,description,likes,visitors)到哈希表的myhash中,每个hash可以存储2**32-1键值对(40多亿)。

Redis hash命令

HDEL key field1 [field2 ...]:删除一个或多个哈希表字段;
HEXISTS key field:查看哈希表key中,指定的字段是否存在;
HGET key field:获取存储在哈希表中指定字段的值;
HGETALL key:获取在哈希表中指定key的所有字段和值;
HINCRBY key field increment:为哈希表key中的指定字段的整数值加上增量increment;
HINCRBYFLOAT key field increment:为哈希表key中的指定字段的浮点数值加上增量increment;
HKEYS key:获取所有哈希表中的字段;
HLEN key:获取哈希表中字段的数量;
HMSET key field1 value1 [field2 value2]:同时将多个field-value(字段-值)对设置到哈希表key中;
HSET key field value:将哈希表key中的字段field的值设为value;
HSETNX key field value:只有在字段field不存在时,设置哈希表字段的值;
HVALS key:获取哈希表中所有值;
HSCAN key cursor[MATCH pattern][COUNT count];

List(列表)

Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含2**32-1个元素(每个列表超过40亿个元素)。

实例

> LPUSH mylist redis
(integer) 1
> LPUSH mylist mongodb
(integer) 2
> LPUSH mylist mysql
(integer) 3
> LRANGE mylist 0 10 1) "mysql"
2)"mongodb"
3)"redis"

在以上实例中我们使用了LPUSH将三个值插入了名为mylist的列表中。

Redis 列表命令

BLPOP key1[key2] timeout:移除并获取列表中的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;
BRPOP key1[key2] timeout:移除并获取列表中的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;
BRPOPLPUSH source destination timeout:从列表中弹出一个值,将淌出的元素插入到另一个列表中并返回它;如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止;
LINDEX key index:通过索引获取列表中的元素;
LINSERT key BEFORE|AFTER pivot value:在列表的元素前或后插入元素;
LLEN key:获取列表长度;
LPOP key:移除并获取列表的第一个元素;
LPUSH key value1[value2]:将一个或多个值插入到列表头部;
LPUSH key value:将一个值插入到已存在的列表头部;
LRANGE key start stop:获取列表范围内的元素;
LREM key count value:移除列表元素;
LSET key index value:通过索引设置列表元素的值;
LREIM key start stop:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间内的元素都将被删除;
RPOP key:移除并获取列表最后一个元素;
RPOPLPUSH source destination:移除列表的最后一个元素,并将该元素添加到另一个列表并返回;
RPUSH key value1[value2]:在列表中添加一个或多个值;
RPUSHX key value:为已存在的列表添加值;

Set(集合)

Redis的Set是String类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1),集合中最多可以包含2**32-1个元素(每个列表超过40亿个元素)。

实例

> SADD myset redis
(integer) 1
> SADD myset mongodb
(integer) 1
> SADD myset mysql
(integer) 1
> SADD myset mysql
(integer) 0
> SMEMBERS myset 1) "mysql"
2) "mongodb"
3) "redis"

在以上实例中我们通过SADD命令向名为myset的集合插入三个元素。

Redis 集合命令

SADD key member1[member2]:向集合添加一个或多个成员;
SCADD key:获取集合的成员数;
SDIFF key1[key2]:返回给定所有集合的差集;
SDIFFSTORE destination key1[key2]:返回给定所有集合的差集并存储在destination中;
SINTER key1[key2]:返回给定所有集合的交集;
SINTERSTORE destination key1[key2]:返回给定所有集合的交集并存储在destination中;
SISMEMBER key member:判断member元素是否是集合key的成员;
SMEMBERS key:返回集合中所有成员;
SMOVE source destination member:将member元素从source集合移动到destination集合;
SPOP key:移除并返回集合中的有个随机元素;
SRANDMEMBER key [count]:返回集合中一个或多个成员;
SUNION key1[key2]:返回所有给定集合的并集;
SUNIONSTORE destination key1[key2]:将所有给定集合的并集存储在destination集合中;
SSCAN key cursor [MATCH pattern][COUNT count]:迭代集合中的元素;

Sorted Set(有序集合)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)去可以重复。集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1),集合中最多可以包含2**32-1个元素(每个列表超过40亿个元素)。

实例

> ZADD mysset 1 redis
(integer) 1
> ZADD mysset 2 mongodb
(integer) 1
> ZADD mysset 3 mysql
(integer) 1
> ZADD mysset 3 mysql
(integer) 0
> ZADD mysset 4 mysql
(integer) 0
> ZRANGE mysset 0 10 WITHSCORES 1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"

在以上实例中我们通过ZADD命令向redis的有序集合中添加了三个值并关联上分数。

Redis 有序集合命令

ZADD key score1 member1[score2 member2]:向有序集合添加一个或多个成员,或者更新已存在成员的分数;
ZCARD key:获取有序集合的成员数;
ZCOUNT key min max:计算在有序集合中指定区间分数的成员数;
ZINCRBY key increment member:有序集合中对指定成员的分数加上增量increment;
ZINTERSTORE destination numkeys key [key...]:计算给定的一个或多个有序集的交集并将结果存储在新的有序集合key中;
ZLEXCOUNT key min max:在有序集合中计算指定区间内成员数量;
ZRANGE key start stop [WITHSCORES]:通过索引区间返回有序集合指定区间内的成员;
ZRANGEBYEX key min max[LIMIT offset count]:通过字典区间返回有序集合的成员;
ZRANGEBYSCORE key min max [WITHSCORES][LIMIT]:通过分数返回有序集合指定区间内的成员;
ZRANK key member:返回有序集合中指定成员的索引;
ZREM key member[member...]:移除有序集合中的一个或多个成员;
AREMRANGEBYEX key min max:移除有序集合中给定的字典区间的所有成员;
ZREMRANGEBYRANK key start stop:移除有序集合中给定的排名区间的所有成员;
ZREMRANGEBYSCORE key min max:移除有序集合中给定的分数区间的所有成员;
ZREVRANGEBYSCORE key max min[WITHSCORES]:返回有序集合中指定分数区间内的成员,分数从高到低排序;
ZREVRANK key member:返回有序集合中指定成员的排名,有序集合成员按分数值递减(从大到小)排序;
ZSCORE key member:返回有序集合中成员的分数值;
ZUNIONSTORE destination numkeys key [key...]:计算给定的一个或多个有序集的并集,并存储在新的key中;
ZSCAN key cursor[MATCH pattern][COUNT count]:迭代有序集合中的元素(包括元素成员和元素分值);

Redis 基础:Redis 数据类型的更多相关文章

  1. redis基础:redis下载安装与配置,redis数据类型使用,redis常用指令,jedis使用,RDB和AOF持久化

    知识点梳理 课堂讲义 课程计划 1. REDIS 入 门 (了解) (操作)   2. 数据类型 (重点) (操作) (理解) 3. 常用指令   (操作)   4. Jedis (重点) (操作) ...

  2. 【Redis】Redis基础 - Redis安装启动测试

    Redis基本 - 安装 文章目录 Redis基本 - 安装 Linux下安装Redis Docker 方式 Github 源码编译方式 直接安装方式 Windows下Redis安装 记录 - Red ...

  3. redis 基础 Redis 数据类型

    String(字符串) Hash(哈希) List(列表) Set(集合) zset(sorted set:有序集合)

  4. redis基础----->redis的基本使用(一)

    这里我们就在虚拟机中安装redis,并且使用java和python实现简单的操作.深情是我承担不起的重担,情话只是偶尔兑现的谎言. redis的使用 下载地址:https://redis.io/.安装 ...

  5. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  6. linux - redis基础

    目录 linux - redis基础 redis 源码编译安装 redis 数据结构 1. strings类型 2. list 类型 3. sets集合类型 有序集合 5. 哈希数据结构 centos ...

  7. Redis 的基本数据类型 和 基础应用场景

    Redis 的基础应用场景 获取中奖用户ID,随机弹出之后集合中就不存在了[set] 存储活动中中奖的用户ID,保证同一个用户不会中奖两次[set] 存储粉丝列表,value 为粉丝的用户ID,sco ...

  8. Redis基础学习(二)—数据类型

    一.Redis支持的数据类型 Redis中存储数据是通过key-value存储的,对于value的类型有以下几种: (1)字符串. (2)Map (3)List (4)Set   public cla ...

  9. Redis 基础及各数据类型对应的命令

    Redis 命令文档 基本概念 安装及使用 可以在官网下载源码编译安装.对于 CentOS,还可以通过 yum install redis 安装. Redis 安装完成后,通过 redis-serve ...

  10. Redis基础(一)数据结构与数据类型

    Redis数据结构 Redis一共有六种数据结构,分别是简单动态字符串.链表.字典.跳表.整数集合.压缩列表. 简单动态字符串(SDS) Redis只会使用C字符串作为字面量,在大多数情况下,Redi ...

随机推荐

  1. $.ready和onload 区别

    1.jq ready()的方法就是Dom Ready 他的作用或者意义就是:在DOM加载完成后就可以可以对DOM进行操作. 一般情况先一个页面响应加载的顺序是,域名解析-加载html-加载js和css ...

  2. python 另一种打开文章的方式——codecs

    通常我们使用python打开文件都是 open(‘beijing.txt’)或者是 with open(‘beijing.txt’)as f 那么今天来给你带来一个新的文档打开方式 python的co ...

  3. 六种流行的语言大餐---C、C++、python、Java、php、C#你更喜欢哪一个呢?

    引言 鉴于五一期间超大的人流量,LZ思来想去,最终还是选择蜗居在自己的出租屋.无聊之际,当然不能忘了做点什么事情,于是LZ就研究了一下几种语言的皮毛,在这里献丑一翻,希望各位猿友莫要见笑. 不过说来也 ...

  4. OpenGL 笔记<1> 固定管线实例 + 双缓存测试实例

    欲以此分类来记录opengl的学习历程,此为第一篇,所以先来一个固定管线的例子,以及对双缓存的测试. 一.配置环境 写之前,先进行配置,然后再讲内容. 注:第一部分涉及的代码均忽略. [环境配置传送门 ...

  5. HTML文件转Word文件格式

    这是我需要转换的HTML文件 第一步~ 使用我们的福昕阅读器将我们.html文件打开,如下图 第二步: 点击“文件”——“另存为”——选择一个你自己喜欢的位置存放文件,此时的文件已经被转换成了.pdf ...

  6. 学习python,第五篇

    Python中%r和%s的详解及区别 %r用rper()方法处理对象%s用str()方法处理对象 有些情况下,两者处理的结果是一样的,比如说处理int型对象. 例一: print "I am ...

  7. Redis源码阅读(一)事件机制

    Redis源码阅读(一)事件机制 Redis作为一款NoSQL非关系内存数据库,具有很高的读写性能,且原生支持的数据类型丰富,被广泛的作为缓存.分布式数据库.消息队列等应用.此外Redis还有许多高可 ...

  8. Java 内存模型_2

    title: Java 内存模型_2 date: 2017-01-28 02:04:06 tags: [JMM] categories: [Programming,Java] --- Why 理解 J ...

  9. Python列表解析

    列表解析 根据已有列表,高效创建新列表的方式. 列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中. 语法: [expression for iter_val in i ...

  10. 第10讲:利用SQL语言实现关系代数操作

    一.实现并.交.差运算 1. 基本语法形式:子查询 [union [all] | intersect [all] | except [all] 子查询] ①意义:将关系代数中的∪.∩.- 分别用uni ...