0


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

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 ...]

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


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

在这里插入图片描述

标签: redis java 数据库

本文转载自: https://blog.csdn.net/m0_57310550/article/details/126884310
版权归原作者 热爱飞行的小应学长 所有, 如有侵权,请联系我们删除。

“Java真的不难(四十八)Redis的入门及使用(一)”的评论:

还没有评论