Redis五种基本数据类型


1.Redis 简介

Redis 是我们在互联网应用中使用最广泛的一个 NoSQL 数据库,基于 C 开发的键值对存储数据库,Redis 这个名字是 Remote Dictionary Service 字母缩写。很多人想到 Redis,就想到缓存。但实际上 Redis 除了缓存之外,还有许多更加丰富的使用场景。比如分布式锁,限流。
特点:

  • 支持数据持久化
  • 支持多种不同的数据结构类型之间的映射
  • 支持主从模式的数据备份
  • 自带了发布订阅系统
  • 定时器、计数器

2.Redis 安装

四种方式获取一个 Redis:

  1. 直接编译安装(推荐使用)
  2. 使用 Docker
  3. 也可以直接安装
  4. 还有一个在线体验的方式,通过在线体验,可以直接使用 Redis 的功能https://try.redis.io/

3.Redis 五种基本数据类型

Redis 启动
首先,修改 redis.conf 配置文件:
在这里插入图片描述
配置完成后,保存退出,再次通过 redis-server redis.conf 命令启动 Redis,此时,就是在后台启动了。

1.String

String 是 Redis 里边最最简单的一种数据结构。在 Redis 中,所以的 key 都是字符串,但是,不同的key 对应的 value 则具备不同的数据结构,我们所说的五种不同的数据类型,主要是指 value 的数据类型不同。
Redis 中的字符串是动态字符串,内部是可以修改的,像 Java 中的StringBuffer,它采用分配冗余空间的方式来减少内存的频繁分配。在 Redis 内部结构中,一般实际分配的内存会大于需要的内存,当字符串小于 1M 的时候,扩容都是在现有的空间基础上加倍,扩容每次扩 1M 空间,最大512M

常用命令说明
setset 就是给一个 key 赋值的。
append使用 append 命令时,如果 key 已经存在,则直接在对应的 value 后追加值,否则就创建新的键值对。
decr可以实现对 value 的减 1 操作(前提是 value 是一个数字),如果 value 不是数字,会报错,如果value 不存在,则会给一个默认的值为 0,在默认值的基础上减一。
decrby和 decr 类似,但是可以自己设置步长,该命令第二个参数就是步长。
getget 用来获取一个 key 的 value。
getrangegetrange 可以用来返回 key 对应的 value 的子串,这有点类似于 Java 里边的 substring。这个命令第二个和第三个参数就是截取的起始和终止位置,其中,-1 表示最后一个字符串,-2 表示倒数第二个字符串,以此类推。
getsetg获取并更新某一个 key。
incr给某一个 key 的 value 自增。
incrby给某一个 key 的 value 自增,同时还可以设置步长。
incrbyfloat和 incrby 类似,但是自增的步长可以设置为浮点数。
mget 和 mset批量获取和批量存储。
ttl查看 key 的有效期。
setex在给 key 设置 value 的同时,还设置过期时间。
psetex和 setex 类似,只不过这里的时间单位是毫秒。
setnx默认情况下, set 命令会覆盖已经存在的 key,setnx 则不会。
msetnx批量设置。
setrange覆盖一个已经存在的 key 的value。
strlen查看字符串长度。

BIT 命令

在 Redis 中,字符串都是以二进制的方式来存储的。例如 set k1 a,a 对应的 ASCII 码是 97,97 转为
二进制是 01100001,BIT 相关的命令就是对二进制进行操作的。

常用命令说明
getbitkey 对应的 value 在 offset 处的 bit 值。
setbit修改 key 对应的 value 在 offset 处的 bit 值
bitcount统计二进制数据中 1 的个数

2.List

常用命令说明
lpush将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误
lrange返回列表指定区间内的元素
rpush向存于 key 的列表的尾部插入所有指定的值。
rpop移除并返回列表的尾元素。
lpop移除并返回列表的头元素。
lindex返回列表中,下标为 index 的元素
ltrimltrim 可以对一个列表进行修剪。
blpop阻塞式的弹出,相当于 lpop 的阻塞版。

3.Set

常用命令说明
sadd添加元素到一个 key 中
smembers获取一个 key 下的所有元素
srem移除指定的元素。
sismember返回某一个成员是否在集合中。
scard返回集合的数量。
srandmember随机返回一个元素
spop随机返回并且出栈一个元素。
smove把一个元素从一个集合移到另一个集合中去。
sdiff返回两个集合的差集。
sinter返回两个集合的交集。
sdiffstore这个类似于 sdiff ,不同的是,计算出来的结果会保存在一个新的集合中。
sinterstore类似于 sinter,只是将计算出来的交集保存到一个新的集合中。
sunion求并集。
sunionstore求并集并且将结果保存到新的集合中。

4.Hash

**在 hash 结构中,key 是一个字符串,value 则是一个 key/value 键值对。**
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常用命令说明
hset添加值。
hget获取值
hmset批量设置。
hmget批量获取。
hdel删除一个指定的 field。
hsetnx默认情况下,如果 key 和 field 相同,会覆盖掉已有的 value,hsetnx 则不会。
hvals获取所有的 value。
hkeys获取所有的 key。
hgetall同时获取所有的 key 和 value。
hexists返回 field 是否存在。
hincrby给指定的 value 自增。
hincrbyfloat可以自增一个浮点数。
hlen返回 某一个 key 中 value 的数量。
hstrlen返回某一个 key 中的某一个 field 的字符串长度。

5.ZSet

常用命令说明
zadd将指定的元素添加到有序集合中。
zscore返回 member 的 score 值
zrange返回集合中的一组元素。
zrevrange返回一组元素,但是是倒序。
zcard返回元素个数。
zcount返回 score 在某一个区间内的元素。
zrangebyscore按照 score 的范围返回元素。
zrank返回元素的排名(从小到大)。
zrevrank返回元素排名(从大到小)。
zincrbyscore 自增。
zinterstore给两个集合求交集。
zrem弹出一个元素。
zlexcount计算有序集合中成员数量。
zrangebylex返回指定区间内的成员。

6.key

常用命令说明
del删除一个 key/value。
dump序列化给定的 key
exists判断一个 key 是否存在。
ttl查看一个 key 的有效期。
expire给一个 key 设置有效期,如果 key 在过期之前被重新 set 了,则过期时间会失效
persist移除一个 key 的过期时间。
keys *查看所有的 key。
pttl和 ttl 一样,只不过这里返回的是毫秒。

7.补充

  1. 四种数据类型(list/set/zset/hash),在第一次使用时,如果容器不存在,就自动创建一个
  2. 四种数据类型(list/set/zset/hash),如果里边没有元素了,那么立即删除容器,释放内存。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值