Java真的不难(四十八)Redis的入门及使用(1)

Redis的入门及使用:

一、什么是Redis?

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库,Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 官网:https://redis.io/
Redis源码地址:https://github.com/redis/redis

特点:

  1. 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s
  2. 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
  3. 原子性:所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来即可
  4. 丰富的特性,支持 publish/subscribe, 通知, key 过期等等特性
  5. 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  6. 支持数据的备份,即master-slave模式的数据备份

二、Redis的安装

下载地址:https://github.com/tporadowski/redis/releases
找到自己电脑系统的版本(这里以Windows为例):
在这里插入图片描述
下载完毕解压即可

包内可得到以下文件:
在这里插入图片描述
Redis 的配置文件位于 Redis 安装目录下,文件名为redis.windows.conf,也就是上图第五个文件。

启动:
首先双击start.bat文件,可以打开以下界面:
在这里插入图片描述
任何不要关闭此窗口,重新打开一个cmd窗口,输入指令:redis-cli.exe -h 127.0.0.1 -p 6379
若无报错,即启动成功!


三、Redis的数据类型

Redis支持五种数据类型:

  1. string(字符串)
  2. hash(哈希)
  3. list(列表)
  4. set(集合)
  5. zset(sorted set:有序集合)

String:
字符串类型没什么好说的,就是大家理解的字符串,比如name:‘‘张三’’
String 类型是二进制且安全的,意思是 Redis 的 String 可以包含任何数据。比如jpg图片或者序列化的对象,String 类型是 Redis 最基本的数据类型,String 类型的值最大能存储 512MB

Hash:
Redis hash 是一个键值(key=>value)对集合,也是一个 String 类型的 field 和 value 的映射表,Hash 特别适合用于存储对象,比如:
输入指令: HMSET runoob name "zhangsan" age "15"
取值:HGET runoob name / HGET runoob age
在这里插入图片描述
上面使用了 Redis HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。每个 hash 可以存储 232 -1 键值对(大概40多亿)

List:
列表也是大家理解的列表,按照插入顺序排序。你可以添加一个元素到列表的头部或者尾部:
在这里插入图片描述
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)

Set:
Redis 的 Set 是 String 类型的无序集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
添加一个 String 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
在这里插入图片描述
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)

zset(有序集合):
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以重复:
在这里插入图片描述


四、Redis命令

Redis 命令用于在 redis 服务上执行操作
Redis 客户端的基本语法为:redis-cli
启动 redis 服务器,打开终端并输入命令 redis-cli,该命令会连接本地的 redis 服务:
在这里插入图片描述
执行 PING 命令,该命令用于检测 redis 服务是否启动

远程 redis 服务上执行命令,也是使用 redis-cli 命令redis-cli -h host -p port -a password
在p后输入端口号,pwd处替换为密码即可,比如:redis-cli -h 127.0.0.1 -p 6379 -a "123456"


Redis 键(key)命令:
Redis 键命令的基本语法:COMMAND KEY_NAME
在这里插入图片描述
在以上实例中 DEL 是一个命令, person 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0

其他键指令:
序列化给定 key ,并返回被序列化的值:DUMP key
检查给定 key 是否存在:EXISTS key
设置 key 的过期时间以秒计: EXPIRE key seconds
设置 key 的过期时间以毫秒计:PEXPIRE key milliseconds
设置 key 过期时间的时间戳以毫秒计:PEXPIREAT key milliseconds-timestamp
移除 key 的过期时间,key 将持久保持:PERSIST key
以毫秒为单位返回 key 的剩余的过期时间: PTTL key
从当前数据库中随机返回一个 key :RANDOMKEY
修改 key 的名称:RENAME key newkey
返回 key 所储存的值的类型:YPE key

其他更全面的指令大家可以自行查阅


Redis 字符串(String)指令:
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法:COMMAND KEY_NAME

在这里插入图片描述
在上述图中使用了 SET 和 GET 命令,键为 person

其他主要的String指令:
返回 key 中字符串值的子字符:GETRANGE key start end
将给定 key 的值设为 value ,并返回 key 的旧值:GETSET key value
只在 key 不存在时设置 key 的值:SETNX key value
返回 key 所储存的字符串值的长度:STRLEN key
同时设置一个或多个 key-value 对:MSET key value [key value ...]

其他更全面的指令大家可以自行查阅


Redis 哈希(Hash)指令:
Hash 特别适合用于存储对象:
在这里插入图片描述
设置一个对象person,有名字、年龄、性别、爱好信息

其他主要的Hash指令:
删除一个或多个哈希表字段:HDEL key field1 [field2]
查看哈希表 key 中指定的字段是否存在: HEXISTS key field
获取存储在哈希表中指定字段的值: HGET key field
获取在哈希表中指定 key 的所有字段和值:HGETALL key
获取所有哈希表中的字段:HKEYS key
获取哈希表中字段的数量: HLEN key
获取哈希表中所有值: HVALS key
将哈希表 key 中的字段 field 的值设为 value:HSET key field value

其他更全面的指令大家可以自行查阅


Redis 列表(List)指令:

通过索引获取列表中的元素:LINDEX key index
在列表的元素前或者后插入元素: LINSERT key BEFORE|AFTER pivot value
获取列表长度:LLEN key
移出并获取列表的第一个元素: LPOP key
将一个或多个值插入到列表头部:LPUSHX key value
获取列表指定范围内的元素: LRANGE key start stop
移除列表元素:LREM key count value
通过索引设置列表元素的值:LSET key index value
移除列表的最后一个元素,返回值为移除的元素:RPOP key
在列表中添加一个或多个值:RPUSH key value1 [value2]
为已存在的列表添加值: RPUSHX key value

其他更全面的指令大家可以自行查阅


Redis 集合(Set)指令:

Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据:
在这里插入图片描述
图中通过 sadd 命令向名为 phone 的集合插入的三个元素,若重复数据则返回0

其他主要的Set指令:

向集合添加一个或多个成员:SADD key member1 [member2]
获取集合的成员数:SCARD key
返回第一个集合与其他集合之间的差异:SDIFF key1 [key2]
返回给定所有集合的交集:SINTER key1 [key2]
判断 member 元素是否是集合 key 的成员:SISMEMBER key member
返回集合中的所有成员: SMEMBERS key
移除并返回集合中的一个随机元素:SPOP key
返回集合中一个或多个随机数:SRANDMEMBER key [count]
移除集合中一个或多个成员:SREM key member1 [member2]
返回所有给定集合的并集:SUNION key1 [key2]

其他更全面的指令大家可以自行查阅


Redis 有序集合(sorted set)指令:

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员:
在这里插入图片描述
图中通过命令 zadd向 Redis 的有序集合中添加了三个值并关联上分数

其他主要的Sorted Set指令:
向有序集合添加一个或多个成员,或者更新已存在成员的分数: ZADD key score1 member1 [score2 member2]
获取有序集合的成员数: ZCARD key
计算在有序集合中指定区间分数的成员数:ZCOUNT key min max
通过索引区间返回有序集合指定区间内的成员:ZRANGE key start stop [WITHSCORES]
返回有序集合中指定成员的索引:ZRANK key member
移除有序集合中的一个或多个成员: ZREM key member [member ...]
移除有序集合中给定的分数区间的所有成员:ZREMRANGEBYSCORE key min max
返回有序集中,成员的分数值: ZSCORE key member
计算给定的一个或多个有序集的并集,并存储在新的 key 中:ZUNIONSTORE destination numkeys key [key ...]

其他更全面的指令大家可以自行查阅


好啦 大家快去试试吧,其他进阶内容将在后续文章中介绍~~

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_57310550/article/details/126884310