Redis 五种基本数据类型

Redis 启动
首先,修改redis.conf配置文件:
image.png

配置完成后,保存退出,再次通过 redis``-``server redis.conf 命令启动 Redis,此时,就是在后台启
动了。
image.png
String
String 是 Redis 里边最最简单的一种数据结构。在 Redis 中,所以的 key 都是字符串,但是,不同的
key 对应的 value 则具备不同的数据结构,我们所说的五种不同的数据类型,主要是指 value 的数据类
型不同。
Redis 中的字符串是动态字符串,内部是可以修改的,像 Java 中的 StringBuffffer,它采用分配冗余空间
的方式来减少内存的频繁分配。在 Redis 内部结构中,一般实际分配的内存会大于需要的内存,当字符
串小于 1M 的时候,扩容都是在现有的空间基础上加倍,扩容每次扩 1M 空间,最大 512M。

  • set

set 就是给一个 key 赋值的。

  • append

使用 append 命令时,如果 key 已经存在,则直接在对应的 value 后追加值,否则就创建新的键值对。

  • decr(-1)

可以实现对 value 的减 1 操作(前提是 value 是一个数字),如果 value 不是数字,会报错,如果
value 不存在,则会给一个默认的值为 0,在默认值的基础上减一。

  • decrby(+)

和 decr 类似,但是可以自己设置步长,该命令第二个参数就是步长。
**decrby k1 5**

  • get

get 用来获取一个 key 的 value。

  • getrange

getrange 可以用来返回 key 对应的 value 的子串,这有点类似于 Java 里边的 substring。这个命令第
二个和第三个参数就是截取的起始和终止位置,其中,-1 表示最后一个字符串,-2 表示倒数第二个字符
串,以此类推…
eg.
>get k1
www.baidu.com

getrange k1 4 -1
得到:baidu.com

  • getset

获取并更新某一个 key。

  • incr

给某一个 key 的 value 自增。

  • incrby

给某一个 key 的 value 自增,同时还可以设置步长。

  • incrbyflfloat

和 incrby 类似,但是自增的步长可以设置为浮点数。

  • mget 和 mset

批量获取和批量存储

  • ttl

查看 key 的有效期。-1,永不过期,-2,已过期

  • setex

在给 key 设置 value 的同时,还设置过期时间(单位:秒)。

  • psetex

和 setex 类似,只不过这里的时间单位是毫秒

  • setnx

默认情况下, set 命令会覆盖已经存在的 key,setnx 则不会。

  • msetnx

批量设置,如果有一个 key 已存在,则批量的设置都不会成功。
image.png

image.png

Redis 的 Java 客户端

开启远程连接

Redis 默认是不支持远程连接的,需要手动开启。

  1. 注释掉 bind:127.0.0.1
  2. 开启密码校验,打开 requirepass,并设置密码。

image.png
image.png
image.png

Redis 做分布式锁

分布式锁也算是 Redis 比较常见的使用场景