redis学习,盗墓者是个丑奴儿

2023-10-23 18:59
文章标签 学习 redis 奴儿 盗墓者

本文主要是介绍redis学习,盗墓者是个丑奴儿,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下午打算过一边redis,边做实验边记录。

之前再用mybatis,mybatis有二级缓存,键值对缓存,缓存建立在sqlsessionfactory对象之上,其sqlsession都共享缓存。

 

使用redis,先在本机Windows使用,redis官方下载为.c文件,需要配合环境使用。Windows下载地址,exe可执行文件:https://github.com/MicrosoftArchive/redis/releases

 

运行redis服务器:

进入redis安装目录,redis-server.exe运行redis服务器,redis.windows.conf告诉redis配置文件。

不告诉他也能运行,当有变配置文件时,就需要加载配置文件了。我的想法

 

连接redis服务器:

启动redis运行可执行redis-server.exe 连接redis运行可执行redis-cli.exe

-h连接IP

-p连接端口,是端口不是密码

-a连接密码

 

quit退出连接。redis默认连接端口6379,默认绑定IP本地,默认无密码。如何修改连接密码?

打开配置文件,找到requirepass,默认是#注释,松开注释,往后填写密码。重启服务器,指定配置文件,重写连接就需要填写密码进行连接了。

 

查看redis所有配置:

方法1:打开配置文件配置

方法二:使用内置命令终端查看

config get *  译:配置得到所有,语义:得到所有配置

 

redis是这样列举配置的:

"key"

"aa"

不是"key":"aa"

 

查看某一项配置:

config get 配置key,根据key得到密码 与绑定IP。端口查询也是 config get port....

 

在终端内配置参数:

config get databases得到所支持的数据库个数

config set databases 17修改数量为17,报错。错误 不支持 配置 参数 databases 应该是不支持数据库的连接数量。再议

不过修改配置使用config set key value修改成功显示OK。参数解释还请看网络配置

 

redis支持5种类型,字符串,哈希,list,set,有序集合,下面都演示一遍:

 

当输出set时,会出现一排东西。key键 value值,这是属于提示范围

 

字符串,双引号给默认加上了,记得自己加:

格式:

存:set key value

取:get key

 

哈希:

存:hmset 主键 key value key value

取:hmget 主键 key

 

hmset表示要存储hash数据类型,hash集合存储的肯定不是一个,或许会存储多个hash。

于是第二个参数主键是在多个hash中区分的。而后面的键值对的key是在一个hash中区分的。

这两个key的范围不同,一个是在所有hash组中做key,一个是在当前hash对象中做key

所以存储格式是,hmset key [ key value...]注意区分这两个key

 

取值也是,hmget key key。前一个key是取哪个hash集合的,后一个key是取哪个集合中哪个值。作用范围不同。

我是这样认为的。

 

如果key重名,则覆盖键,hash集合不运行重复的嘛,计算的hash值一致,就覆盖value了

覆盖情况:

 

在同一个对象下,key不同,表示往此hash对象追加。如上,追加kstr4,在hash集合中。能查到kstr4也能查到kstr2

同一个key中,里面的key不同是追加。同一个key里面的key相同是覆盖。可以推测不同key下相同key当前没关系了。

 

list:

存:lpush key value value value value

取:lrange key StartNumber CountNumber

 

list是可以往后存储重复值,我先加入6 7 8 9 0长度为5,在加入1 2 3 4 5,再加入1 2 3 4 5长度共15

取list值指定,哪个key,从哪里开始取,共取多少数据出来

从01开始取,一个取10个值,另一个取20个值,值不够就不取了

 

lpush push 往里面加 lrange从右边取,存12345 取54321

 

set集合:

存:sadd key value

sadd key value

取:smembers s2

 

一个个往里面存,在取出key中所有成员。如果重复key,则在set此集合中存储。没有覆盖value

 

有序集合再说吧

 

总结实验的这几种存取方式:

字符串,存 :

set name "value"

set name "value" ,

取:get name

 

哈希,存:hmset key      key value key value key value

取:hmget key

附:前一个key是池中每个对象的ID,后面的keyvalue是哈希中每一个实体的键值。所以需要写2key,哈希key重复覆盖,可以一口气存储多个,也可以分多次往里面加。

 

list,存:lpush key value value value value

取:lrange key

附:可以一口气存多个,可以往后加,反着取

 

set,存:

sadd key value

sadd key value

取:smembers key

 

字符串set name "字符"。  get key取

哈希hmset key key value key value key value 键值对应,可追加。 hmget key取

list集合lpush key value value value 往后加值,可追加。 lrange key取

set集合sadd key value。sadd key value。可追加。smembers key取

后三个是集合,都在一个池中存储,可以取是取一片

 

删除以存的集合:

步骤是:增加,查看set集合,删除set集合,在查看set集合

 

del key删除已存在的集合,返回删除的集合个数。返回0表示没删除到。可以删除多个 del key key key

 

判断某个key是否存在:

exists key,检查是否存在,可以exists key key...

 

还有很多指定。也有单独针对以上集合的的命令,请参考网络吧,太繁杂了

 

redis备份数据,save命令:

生成这个文件存储:

dump.rdb

 

再次启动,读取数据上来:

存储的数据就上去了

 

再次存储字符串,set aa "opop"

在save保存

关闭服务器与连接终端,重启

第一次存储的与第二次存储的都在,说明文件是追加不是覆盖

 

查看所有的键,keys 通配符,*所有:

 

获得redis安装目录config get dir:

 

Java连接并使用redis

引入jar:

redis的clients客户端jar,jedis。或许是JavaRedis缩写....

 

操作类是围绕着jredis类进行的:

实例化jedis对象,构造器可以传递要连接的地址,要连接的端口、auth是填写连接密码。可以jedis.ping()调用方法测试是否连接成功了,如果密码错误,或连不上等。就会发送异常了。

 

jedis.set("name","value");字符串设置,也是一对键值对设置

jedis.lpush("key",String...或byte[]...);list集合设置,一个设置字符串到集合,一个是设置数据到集合,数据化byte

jdeis.sadd("key",String...或byte[]...);set集合设置,往set中加入集合参数

 

取值的操作也是绕着jedis操作类进行的。

连接redis,get按键获得字符串值,lrange按键获得list集合,smembers按键获得set集合,keys获得所有的键,configGet获得配置的某一项。

 

Java运行结果:

因为测试了多次,所以list中的数据不停的追加着

 

再一次运行:

list再次追加。而set是因为没变所以容器中数据没动

 

在Java中设置的,终端也实时更新了,只要服务器存在即可:

查询到了方法中设置参数

 

Java中使用redis,操作类jedis。存、取、连接都找他,至于使用的方法,都与终端使用差不多。不过进行了一些简化。redis做到了存取,缓存就可以做了。文章就结束了

 

reids内存占用情况:

 

连接上客户端,使用命令:

info memory

redis占用内存:used_memory_rss_human:246.67M

used_memory:13490096 //数据占用了多少内存(字节)used_memory_human:12.87M //数据占用了多少内存(带单位的,可读性好)used_memory_rss:13490096  //redis占用了多少内存

 

经过测试,将数据以id与json导入redis,redis查询比主键还快,jdbc执行延迟下来是平均4ms,redis是0~1ms。在navicat通过命令执行花去0.041ms,redis 0~1ms。一千万行测试数据。

 

Linux redis:

make后的步骤:

1、前台启动redis
    -1、进入src
    -2、./redis-server
    注意:启动后,redis是在前台运行。将占据屏幕输出。此时只能ctrl+c结束在前台运行的redis
    
2、后台启动redis
    -1、vi redis.conf
    -2、编辑内容:protected-mode no
    -3、wq退出
    -4、./redis-server redis.conf
    
3、Java连接redis
    -1、连接报错,redis处理安全保护模式,不能连接!
    -2、解决办法,vi redis.conf 编辑内容:daemonize yes,wq退出。关闭安全模式,安全模式指只能是127.0.0.1自己连接
    -3、开启6379.连接ok!
    
3、redis设置密码
    -1、vi redis.conf
    -2、requirepass 20190403 后面就是密码。wq退出
    -3、./redis.server redis.conf

 

Windows redis:

1、启动redis服务(server)        redis-server.exe

2、客户端(cli)连接redis服务        redis-cli.exe -h 127.0.0.1 -p 6379    -a密码    6379默认端口

-----------------------cmd- redis操作-----------------------

增|查
1、键值对       set name lisi                        |    get    name
2、list集合      lpush names lisi wangwu zhaoliu    |    lrange names 0 10
3、set集合      sadd age 18                        |    smembers age

删(del适用删除任何数据结构)
1、del name

检查某个键是否存在
1、exists age

以上只是其中三种常用数据结构,redis共有5种数据结构

3、退出redis    quit

-----------------------cmd- end结束-----------------------

-----------------------java- redis操作-----------------------

1、引入pom包Jedis
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.0.1</version>
</dependency>

2、核心操作对象:Jedis

3、Jedis连接redis
Jedis jedis=new Jedis("127.0.0.1",6379);

4、redis操作如cmd一般

-----------------------java- end结束-----------------------

这篇关于redis学习,盗墓者是个丑奴儿的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/269831

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis延迟队列的实现示例

《Redis延迟队列的实现示例》Redis延迟队列是一种使用Redis实现的消息队列,本文主要介绍了Redis延迟队列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、什么是 Redis 延迟队列二、实现原理三、Java 代码示例四、注意事项五、使用 Redi

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二