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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Java_Dmz/article/details/83039049

下午打算过一边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做到了存取,缓存就可以做了。文章就结束了

猜你喜欢

转载自blog.csdn.net/Java_Dmz/article/details/83039049