Redis 基础:Redis 数据类型
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 数据类型的更多相关文章
- redis基础:redis下载安装与配置,redis数据类型使用,redis常用指令,jedis使用,RDB和AOF持久化
知识点梳理 课堂讲义 课程计划 1. REDIS 入 门 (了解) (操作) 2. 数据类型 (重点) (操作) (理解) 3. 常用指令 (操作) 4. Jedis (重点) (操作) ...
- 【Redis】Redis基础 - Redis安装启动测试
Redis基本 - 安装 文章目录 Redis基本 - 安装 Linux下安装Redis Docker 方式 Github 源码编译方式 直接安装方式 Windows下Redis安装 记录 - Red ...
- redis 基础 Redis 数据类型
String(字符串) Hash(哈希) List(列表) Set(集合) zset(sorted set:有序集合)
- redis基础----->redis的基本使用(一)
这里我们就在虚拟机中安装redis,并且使用java和python实现简单的操作.深情是我承担不起的重担,情话只是偶尔兑现的谎言. redis的使用 下载地址:https://redis.io/.安装 ...
- mysql主从复制、redis基础、持久化和主从复制
一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...
- linux - redis基础
目录 linux - redis基础 redis 源码编译安装 redis 数据结构 1. strings类型 2. list 类型 3. sets集合类型 有序集合 5. 哈希数据结构 centos ...
- Redis 的基本数据类型 和 基础应用场景
Redis 的基础应用场景 获取中奖用户ID,随机弹出之后集合中就不存在了[set] 存储活动中中奖的用户ID,保证同一个用户不会中奖两次[set] 存储粉丝列表,value 为粉丝的用户ID,sco ...
- Redis基础学习(二)—数据类型
一.Redis支持的数据类型 Redis中存储数据是通过key-value存储的,对于value的类型有以下几种: (1)字符串. (2)Map (3)List (4)Set public cla ...
- Redis 基础及各数据类型对应的命令
Redis 命令文档 基本概念 安装及使用 可以在官网下载源码编译安装.对于 CentOS,还可以通过 yum install redis 安装. Redis 安装完成后,通过 redis-serve ...
- Redis基础(一)数据结构与数据类型
Redis数据结构 Redis一共有六种数据结构,分别是简单动态字符串.链表.字典.跳表.整数集合.压缩列表. 简单动态字符串(SDS) Redis只会使用C字符串作为字面量,在大多数情况下,Redi ...
随机推荐
- bootstrap学习笔记(5)
Bootstrap输入框组 主要记住一个原则 创建输入框的步骤 把前缀或后缀元素放在一个带有 class .input-group 的 <div> 中. 接着,在相同的 <div&g ...
- Jenkins远程测试
Jenkins远程测试 网络测试,如,selenium 测试可以通过主从和 selenium 套件插件远程安装在机器上运行.下列步骤显示了如何运行使用此配置来进行远程测试. 第1步 - 确保主从配置到 ...
- Unity3D Shader 学习笔记(二):ShaderLab的结构和基本属性
(一) ShaderLab: 什么是ShaderLab: Unity3D支持的Shader种类包括: 1.Surface Shader:表面着色器 2.Vertex & Fragment Sh ...
- 记一次开发人员的奇葩操作-------导致root用户不能登录
首先,我表示国庆长假被开发呼叫,是一件很不开心的事...... 1.问开发,是不是/etc/passwd文件被更改了? 回答:没有 还好是新装的服务器,还好哥有服务器管理口的远程控制 单用户模式 ...
- centos7 上安装mysql5.7后登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Yes 或者No)
原文转载自以下链接:https://blog.csdn.net/keepd/article/details/77151006 安装完mysql后会有个临时密码去日志查看,但是查看登录修改密后还是不行 ...
- 提高JetBrains软件的性能
在Java开发中,我用的开发工具是Idea,它是JetBrains公司旗下的产品. 电脑内存较大,但是Idea加载的慢,我们可以通过 \bin 下的 idea64.exe.vmoptions 和 id ...
- Python20-Day05
一.模块与包 1.模块 什么是模块? 在python中,模块可以分为四个通用类别: 1. 使用python编写的.py文件 2. 已经被编译为共享库或DLL的c或者c++扩展 3. 把一系列模块组织到 ...
- imooc-c++学习感悟
imooc--慕课网c++课程链接:[课程链接](http://www.imooc.com/course/list?c=C+puls+puls) Imooc 慕课网c++学习感悟 1.课程名称:c++ ...
- 灵悟礼品网上专卖店Sprint计划
一.现状 小组成员初步了解了所做项目的大致内容,需要时间一步一步分析和规划. 二.部分需求索引卡 第一个阶段没有具体功能的实现,只是先把所要做的项目思路理清,并把相应的数据库建立好. 三.任务认领 产 ...
- 【CSAPP笔记】4. 汇编语言——基础知识
程序的机器级表示 计算机能读懂是机器代码(machine code)-- 用字节序列编码的低级操作 -- 也就是0和1.编译器基于编程语言的规则.目标机器的指令集和操作系统的规则,经过一系列阶段产生机 ...