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

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


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

    在这里插入图片描述

  • 相关阅读:
    websocket给指定客户端推送消息
    新库上线 | CnOpenDataA股上市公司董监高信息数据
    大数据管道聚合并分页 有什么调优方案
    陕西Biotin-LC_CAS:72040-64-3_N-生物素氨基己酸供应商价格
    markdown的学习和使用
    模板层-过滤器和继承
    GIS应用程序的Web编程教程
    Java架构师之路六、高并发与性能优化:高并发编程、性能调优、线程池、NIO、Netty、高性能数据库等。
    ZooKeeper启停脚本
    【DataEase】“宇宙最强” 零代码数据可视化分析工具的安装部署保姆级教程
  • 原文地址:https://blog.csdn.net/m0_57310550/article/details/126884310