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在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

redis+lua实现分布式限流的示例

《redis+lua实现分布式限流的示例》本文主要介绍了redis+lua实现分布式限流的示例,可以实现复杂的限流逻辑,如滑动窗口限流,并且避免了多步操作导致的并发问题,具有一定的参考价值,感兴趣的可... 目录为什么使用Redis+Lua实现分布式限流使用ZSET也可以实现限流,为什么选择lua的方式实现

Redis中管道操作pipeline的实现

《Redis中管道操作pipeline的实现》RedisPipeline是一种优化客户端与服务器通信的技术,通过批量发送和接收命令减少网络往返次数,提高命令执行效率,本文就来介绍一下Redis中管道操... 目录什么是pipeline场景一:我要向Redis新增大批量的数据分批处理事务( MULTI/EXE

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

Redis解决缓存击穿问题的两种方法

《Redis解决缓存击穿问题的两种方法》缓存击穿问题也叫热点Key问题,就是⼀个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击,本文给大家介绍了Re... 目录引言解决办法互斥锁(强一致,性能差)逻辑过期(高可用,性能优)设计逻辑过期时间引言缓存击穿:给

Redis中如何实现商品秒杀

《Redis中如何实现商品秒杀》:本文主要介绍Redis中如何实现商品秒杀问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录技术栈功能实现步骤步骤一:准备商品库存数据步骤二:实现商品秒杀步骤三:优化Redis性能技术讲解Redis的List类型Redis的Set