Redis 学习(二) - 数据类型和基本操作


title: Redis学习(二)-数据类型和基本操作
date: 2020-10-07
tags:

  • Redis
  • Redis学习(二)-数据类型和基本操作
    categories:
  • Redis
  • Redis学习(二)-数据类型和基本操作

一、Redis数据类型

1.1 简介

常用的5种数据结构

  • key-string:一个key对应一个值
  • key-hash:一个key对应一个Map。
  • key-list:一个key对应一个列表。
  • key-set:一个key对应一个集合。
  • key-zset:一个key对应一个有序的集合。

另外三种数据结构

HyperLogLog:计算近似值的。

GEO:地理位置。

BIT:一般存储的也是一个字符串,存储的是一个byte[ ]

1.2 五种常用的存储数据结构图

五种常用的存储数据结构图
  • key-string:最常用的,一般用于存储一个值。
  • key-hash:存储一个对象数据的。
  • key-list:使用st结构实现栈和队列结构
  • key-set:交集,差集和并集的操作。
  • key-zset:排行榜,积分存储等操作。

二、Redis数据类型常用命令

2.1 字符串(String)命令

Redis 字符串数据类型的相关命令用于管理 redis 字符串值

序号命令描述
1SET key value设置指定 key 的值
2GETt key获取指定 key 的值
3MSET key1 [key2…]设置所有(一个或多个)给定 key 的值
4MGET key1 [key2…]获取所有(一个或多个)给定 key 的值
5INCR key将 key 中储存的数字值增1
6DECR key将 key 中储存的数字值减1
8INCRBY key increment将 key 所储存的值加上给定的增量值(increment)
9DECRBY key decrement将key 所储存的值减去给定的减量值(decrement)
10SETEX key seconds value设置值的同时,指定生存时间,并将 key 的过期时间设为 seconds (以秒为单位)(每次向 Redis中添加数据时,尽量都设置上生存时间)
11SETNX key value设置值,如果当前key不存在的话(如果这个key存在,什么事都不做,如果这个key不存在,和set命令一样)
12APPEND key value如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
13STRLEN key返回 key 所储存的字符串值的长度

2.2 哈希(Hash)命令

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

序号命令描述
1HSET key field value将哈希表 key 中的字段 field 的值设为 value
2HGET key field获取存储在哈希表中指定字段的值
3HMSET key field1 value1 [field2 value2… ]同时将多个 field-value (域-值)对设置到哈希表 key 中
4HMGET key field1 [field2…]获取所有给定字段的值
5HINCRBY key field increment为哈希表 key 中的指定字段的整数值加上增量 increment
6HSETNX key field value只有在字段 field 不存在时,设置哈希表字段的值
7HEXISTS key field查看哈希表 key 中,指定的字段是否存在
8HDEL key field1 [field2…]删除一个或多个哈希表字段
9HGETALL key获取在哈希表中指定 key 的所有字段和值
10HVALS key获取哈希表中指定 key所有值
11HKEYS key获取哈希表中指定 key的所有字段
12HLEN key获取哈希表中指定 key的字段的数量

2.3 列表(List)命令

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

序号命令描述
1LPUSH key value1 [value2]将一个或多个值插入到列表头部
2RPUSH key value1 [value2]将一个或多个值插入到列表尾部
3LPUSHX key value1 [value2]将一个或多个值插入到列表头(如果key不存在,什么事都不做,如果key存在,但是不是list结构,什么都不做)
4RPUSHX key value1 [value2]将一个或多个值插入到列表尾(如果key不存在,什么事都不做,如果key存在,但是不是list结构,什么都不做)
5LSET key index value通过索引设置列表中已存在元素的值
6LPOP key移出并获取列表的第一个元素
7RPOP key移除并获取列表最后一个元素
8LRANGE key start stop获取列表指定范围内的元素
9LINDEX key index通过索引获取列表中的元素
10LLEN key获取列表长度
11LREM key count value删除列表中指定的数据(他是删除当前列表中的 count个 value值, count>0从左侧向右侧删除, count<0从右侧向左侧删除count==0删除列表中全部的 value)
12LTRIM key start stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
13RPOPLPUSH source destination移除列表的最后一个元素,并将该元素添加到另一个列表并返回

2.4 集合(Set)命令

Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

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

序号命令介绍
1SADD key member1 [member2…]向集合添加一个或多个成员
2SMEMBERS key返回集合中的所有成员
3SPOP key移除并返回集合中的一个随机元素
4SINTER key1 [key2…]返回给定所有集合的交集
5SUNION key1 [key2…]返回所有给定集合的并集
6SDIFF key1 [key2…]返回给定所有集合的差集
7SREM key member1 [member2…]移除集合中一个或多个成员
8SISMEMBER key member判断 member 元素是否是集合 key 的成员

2.5 有序集合(sorted set)命令

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

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

有序集合的成员是唯一的,但分数(score)却可以重复

序号命令介绍
1ZADD key score1 member1 [score2 member2…]向有序集合添加一个或多个成员,或者更新已存在成员的分数
2ZINCRBY key increment member有序集合中对指定成员的分数加上增量 increment(如果 member是存在于key中的,正常增加分数,如果 memeber不存在,这个命令就相当于zadd)
3ZCARD key获取有序集合的成员数
4ZCOUNT key min max计算在有序集合中指定区间分数的成员数
5ZREM key member 1 [member2 …]移除有序集合中的一个或多个成员
6ZSCORE key member返回有序集中,成员的分数值
7ZRANGE key start stop [WITHSCORES]根据分数从小到大排序,获取指定索引范围内的数据( withscores如果添加这个参数,那么会返回 member对应的分数)
8ZREVRANGE key start stop [WITHSCORES]根据分数从大到小排序,获取指定索引范围内的数据( withscores如果添加这个参数,那么会返回 member对应的分数)
9ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT start stop]通过指定分数范围返回有序集合内的成员( limit 限制索引,min和max为+inf -inf输出全部)
10ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT start stop]返回有序集中指定分数区间内的成员,分数从高到低排序

2.6 键(key)命令

Redis 键命令用于管理 redis 的键。

序号命令介绍
1KEYS pattern查找所有符合给定模式( pattern (* | 或以xxx为开头) )的 key 。
2EXISTS key检查给定 key 是否存在
3DEL key1 [key2…]该命令用于在 key 存在是删除 key
4PEXPIRE key milliseconds设置 key 的过期时间亿以毫秒计
5EXPIRE key seconds为给定 key 设置过期时间
6EXPIREAT key timestampEXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)
7PEXPIREAT key milliseconds-timestamp设置 key 过期时间的时间戳(unix timestamp) 以毫秒计
8TTL key以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live,-1标识未指定生存时间,-2标识不存在这个key)
9PTTL key以毫秒为单位返回 key 的剩余的过期时间
10PERSIST key移除 key 的过期时间,key 将持久保持
11MOVE key db将当前数据库的 key 移动到给定的数据库 db 当中
12SELECT 0~15选择操作的库

2.7 库的命令

序号命令介绍
1SELECT 0~15选择操作的库
2FLUSHDB删除当前数据库的所有key
3FLUSHALL删除所有数据库的所有key
4DBSIZE返回当前数据库的 key 的数量
5LASTSAVE返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
6MONITOR实时打印出 Redis 服务器接收到的命令,调试用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值