Redis学习记录(菜鸟教程学习)

Redis教程
一、Window 下安装
下载地址:https://github.com/MSOpenTech/redis/releases。
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,比如:我是64位的,所以应该下载是Redis-x64-xxx.zip压缩包,解压之后将文件夹重新命名为 redis。(免安装版本)
在这里插入图片描述
文件夹里是这样的:
在这里插入图片描述
打开一个cmd 窗口使用cd命令切换到redis的目录下运行(或者可以把redis的路径添加到系统的环境变量中,这样就不用进入redis目录下运行了。)
在这里插入图片描述
输入redis-server.exe redis.windows.conf(redis.windows.conf可以省略)
执行结果:
在这里插入图片描述
(这个cmd的界面不要关闭,如果关闭的话redis就没有办法使用了)

开启另一个cmd窗口,切换到redis目录下运行下面的语句

redis-cli.exe -h 127.0.0.1 -p 6379(redis-cli.exe 是Redis 自带的一个客户端工具,它可以用来连接到我们当前的 Redis 服务器,默认服务端口为6379,默认的本地ip地址为127.0.0.1)

接下来就可以测试是否成功了:
设置键值对:
set testKey hello
取出键值对:
get testKey
执行结果:
在这里插入图片描述
二、Redis 配置

1、查看配置

Redis的配置文件位于 Redis 安装目录下,文件名为 redis.windows.conf
(Windows下)。
也可以通过 CONFIG 命令查看或设置配置项。
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME

(1). 使用 * 号获取所有配置项:
在这里插入图片描述
(2).查看其中某一项,如:logfile
在这里插入图片描述
2、编辑配置

通过修改 redis.conf 文件或通过使用 CONFIG set 命令来修改配置。
redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
例:修改其中某一项,如:loglevel
在这里插入图片描述
redis.conf 配置项说明如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
三、redis数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1、String(字符串)

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
在这里插入图片描述
(乱码问题:输入产生乱码的问题暂时还没有解决方法,有知道的小伙伴也可以下方评论告知一下。输出乱码的问题,就是使用redis-cli –raw来开启客户端)

2、Hash(哈希)

Redis hash 是一个 string 类型的 field 和 value 的映射表,特别适合用于存储对象。
在这里插入图片描述
每个 hash 可以存储 232 -1 键值对(40多亿)。
注意:首先要删除之前的测试用过的key,不然会报错

3、List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
在这里插入图片描述
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

4、Set(集合)

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

5、zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,但分数(score)却可以重复。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zadd 命令
添加元素到集合,元素在集合中存在则更新对应score
zadd key score member
在这里插入图片描述
6、各个数据类型应用场景
在这里插入图片描述
Redis命令

一、Redis命令

连接到本地的 redis 服务,执行 PING 命令,该命令用于检测 redis 服务是否启动。(不加—raw,获取数据的时候会乱码)
在这里插入图片描述
在远程 redis 服务上执行命令
$ redis-cli -h host -p port -a password(host:主机地址,port:端口号,password:密码)
在这里插入图片描述
二、Redis 键(key)

语法:
127.0.0.1:6379> COMMAND KEY_NAME
例:
在这里插入图片描述
Redis 键相关的基本命令:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
三、Redis字符串

语法:
redis 127.0.0.1:6379> COMMAND KEY_NAME
例:
在这里插入图片描述
常用的 redis 字符串命令:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
四、Redis哈希(hash)

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
在这里插入图片描述
(注意:不要忘记执行DEL runoobkey操作,否则会因为类型不同而报错!)
redis hash 基本的相关命令:
在这里插入图片描述在这里插入图片描述

五、Redis列表

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
例:
在这里插入图片描述
列表相关的基本命令:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
六、Redis 集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
例:
在这里插入图片描述
Redis 集合基本命令:
在这里插入图片描述在这里插入图片描述

七、Redis 有序集合(sorted set)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,但分数(score)却可以重复。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
例:
在这里插入图片描述
redis 有序集合的基本命令:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
八、Redis HyperLogLog

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数。
例:
在这里插入图片描述
redis HyperLogLog 的基本命令:
在这里插入图片描述
九、Redis发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
在这里插入图片描述
当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
在这里插入图片描述
1、创建订阅频道名为 redisChat
在这里插入图片描述

2、我们先重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。
在这里插入图片描述在这里插入图片描述

redis 发布订阅常用命令:
在这里插入图片描述
十、redis事务

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
批量操作在发送 EXEC 命令前被放入队列缓存。
收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
开始事务。
命令入队。
执行事务。
例:以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:
在这里插入图片描述
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
例:
在这里插入图片描述
(如果在 set b bbb 处失败,set a 已成功不会回滚,set c 还会继续执行。)
redis 事务的相关命令:
在这里插入图片描述
十一、Redis 脚本

Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。
语法:
redis 127.0.0.1:6379> EVAL script numkeys key [key …] arg [arg …]
例:
在这里插入图片描述
redis 脚本常用命令:
在这里插入图片描述
十二、Redis 连接

客户端如何通过密码验证连接到 redis 服务,并检测服务是否在运行:
在这里插入图片描述
redis 连接的基本命令:
在这里插入图片描述
十三、Redis 服务器

获取 redis 服务器的统计信息:
在这里插入图片描述
(因为太长了,所以只截了一部分的图,你们可以自己试一下)

redis 服务器的相关命令:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
Redis高级教程

一、Redis 数据备份与恢复

1、备份数据
Redis SAVE 命令:用于创建当前数据库的备份。
语法:
redis 127.0.0.1:6379> SAVE
例:
在这里插入图片描述
该命令将在 redis 安装目录中创建dump.rdb文件。
在这里插入图片描述
2、恢复数据
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,如下所示:
在这里插入图片描述
3、Bgsave
创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
在这里插入图片描述
二、Redis安全

我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。
1、查看是否设置了密码验证:
在这里插入图片描述
默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。
修改该参数:
在这里插入图片描述
设置密码后,客户端连接 redis 服务就需要密码验证,否则无法执行命令。
AUTH 命令语法:
127.0.0.1:6379> AUTH password
例:
在这里插入图片描述
三、Redis性能测试

语法:
redis-benchmark [option] [option value]
(注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。)
例:(同时执行 10000 个请求来检测性能)
在这里插入图片描述
例:
在这里插入图片描述
redis 性能测试工具可选参数:
在这里插入图片描述在这里插入图片描述

四、Redis 客户端连接

Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:
首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。
然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法
然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送
最大连接数
在 Redis2.4 中,最大连接数是被直接硬编码在代码里面的,而在2.6版本中这个值变成可配置的。
maxclients 的默认值是 10000,你也可以在 redis.conf 中对这个值进行修改。
在这里插入图片描述
在服务启动时设置最大连接数为 100000:
在这里插入图片描述
客户端命令:
在这里插入图片描述
五、Redis 管道技术

六、Redis 分区

(由于暂时用不到这么高深的技术,而且本人有些看不懂,所以就没有总结,有需要的小伙伴们可以去菜鸟教程的redis里自行查找一下)

七、Java 使用 Redis

(由于我用的是java,所以PHP有需要的小伙伴们可以去菜鸟教程的redis里自行查找一下)
1、安装
下载驱动包jedis.jar,放在你的项目中
https://www.runoob.com/redis/redis-java.html
在这里插入图片描述
点击下载就行,很方便
2、连接到 redis 服务
代码:

import redis.clients.jedis.Jedis;
 
public class RedisJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
    }
}

点击运行,成功!
在这里插入图片描述
3、Redis Java String(字符串) 实例
代码:

import redis.clients.jedis.Jedis;
 
public class RedisJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //设置 redis 字符串数据
        jedis.set("runoobkey", "www.runoob.com");
        // 获取存储的数据并输出
        System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
    }
}

运行结果:
在这里插入图片描述
4、Redis Java List(列表) 实例
代码:

import java.util.List;
import redis.clients.jedis.Jedis;
 
public class RedisJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
        //存储数据到列表中
        jedis.lpush("site-list", "Runoob");
        jedis.lpush("site-list", "Google");
        jedis.lpush("site-list", "Taobao");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("site-list", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表项为: "+list.get(i));
        }
    }
}

运行结果:
在这里插入图片描述
5、Redis Java Keys 实例
代码:

import java.util.Iterator;
import java.util.Set;
import redis.clients.jedis.Jedis;
 
public class RedisJava {
    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");
        System.out.println("连接成功");
 
        // 获取数据并输出
        Set<String> keys = jedis.keys("*"); 
        Iterator<String> it=keys.iterator() ;   
        while(it.hasNext()){   
            String key = it.next();   
            System.out.println(key);   
        }
    }
}

运行结果:
在这里插入图片描述

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
尚硅谷是一个教育机构,他们提供了一份关于Redis学习笔记。根据提供的引用内容,我们可以了解到他们提到了一些关于Redis配置和使用的内容。 首先,在引用中提到了通过执行命令"vi /redis-6.2.6/redis.conf"来编辑Redis配置文件。这个命令可以让你进入只读模式来查询"daemonize"配置项的位置。 在引用中提到了Redis会根据键值计算出应该送往的插槽,并且如果不是该客户端对应服务器的插槽,Redis会报错并告知应该前往的Redis实例的地址和端口。 在引用中提到了通过修改Redis的配置文件来指定Redis的日志文件位置。可以使用命令"sudo vim /etc/redis.conf"来编辑Redis的配置文件,并且在文件中指定日志文件的位置。 通过这些引用内容,我们可以得出结论,尚硅谷的Redis学习笔记涵盖了关于Redis的配置和使用的内容,并提供了一些相关的命令和操作示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis学习笔记--尚硅谷](https://blog.csdn.net/HHCS231/article/details/123637379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis学习笔记——尚硅谷](https://blog.csdn.net/qq_48092631/article/details/129662119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍六琪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值