redis使用实例分析-亚博电竞手机版
redis使用实例分析
这篇文章主要介绍“redis使用实例分析”,在日常操作中,相信很多人在redis使用实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”redis使用实例分析”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
第一part:原生jedis连接redis
首先我们为要先了解,我们在原先使用mysql的时候,用jdbc连接数据库。同理这里我们连接redis,就要使用jedis。
第一步:新建java项目,导包
新建java项目,导包
第二步:打开redis服务,写方法
打开redis服务
新建一个测试类,写一个方法
publicclassping{publicstaticvoidmain(string[]args){jedisjedis=newjedis("127.0.0.1",6379);system.out.println("连接成功");//查看服务是否运行system.out.println("服务正在运行:" jedis.ping());}}
证明连同了
第三步:简单操作
这里写一些简单的jedis对各种类型的操作
基本操作api
publicclasstestpassword{publicstaticvoidmain(string[]args){jedisjedis=newjedis("127.0.0.1",6379);//验证密码,如果没有设置密码这段代码省略//jedis.auth("password");jedis.connect();//连接jedis.disconnect();//断开连接jedis.flushall();//清空所有的key}}
对于key操作的命令
publicclasstestkey{publicstaticvoidmain(string[]args){jedisjedis=newjedis("127.0.0.1",6379);system.out.println("清空数据:" jedis.flushdb());system.out.println("判断某个键是否在:" jedis.exists("username"));system.out.println("新增<'username','kuangshen'>的键值对:" jedis.set("username","kuangshen"));system.out.println("新增<'password','password'>的键值对:" jedis.set("password","password"));system.out.print("系统中所有的键如下:");set
对string操作的命令
publicclassteststring{publicstaticvoidmain(string[]args){jedisjedis=newjedis("127.0.0.1",6379);jedis.flushdb();system.out.println("===========增加数据===========");system.out.println(jedis.set("key1","value1"));system.out.println(jedis.set("key2","value2"));system.out.println(jedis.set("key3","value3"));system.out.println("删除键key2:" jedis.del("key2"));system.out.println("获取键key2:" jedis.get("key2"));system.out.println("修改key1:" jedis.set("key1","value1changed"));system.out.println("获取key1的值:" jedis.get("key1"));system.out.println("在key3后面加入值:" jedis.append("key3","end"));system.out.println("key3的值:" jedis.get("key3"));system.out.println("增加多个键值对:" jedis.mset("key01","value01","key02","value02","key03","value03"));system.out.println("获取多个键值对:" jedis.mget("key01","key02","key03"));system.out.println("获取多个键值对:" jedis.mget("key01","key02","key03","key04"));system.out.println("删除多个键值对:" jedis.del("key01","key02"));system.out.println("获取多个键值对:" jedis.mget("key01","key02","key03"));jedis.flushdb();system.out.println("===========新增键值对防止覆盖原先值==============");system.out.println(jedis.setnx("key1","value1"));system.out.println(jedis.setnx("key2","value2"));system.out.println(jedis.setnx("key2","value2-new"));system.out.println(jedis.get("key1"));system.out.println(jedis.get("key2"));system.out.println("===========新增键值对并设置有效时间=============");system.out.println(jedis.setex("key3",2,"value3"));system.out.println(jedis.get("key3"));try{timeunit.seconds.sleep(3);}catch(interruptedexceptione){e.printstacktrace();}system.out.println(jedis.get("key3"));system.out.println("===========获取原值,更新为新值==========");system.out.println(jedis.getset("key2","key2getset"));system.out.println(jedis.get("key2"));system.out.println("获得key2的值的字串:" jedis.getrange("key2",2,4));}}
事务操作
publicclasstestmulti{publicstaticvoidmain(string[]args){//创建客户端连接服务端,redis服务端需要被开启jedisjedis=newjedis("127.0.0.1",6379);jedis.flushdb();jsonobjectjsonobject=newjsonobject();jsonobject.put("hello","world");jsonobject.put("name","java");//开启事务transactionmulti=jedis.multi();stringresult=jsonobject.tojsonstring();try{//向redis存入一条数据multi.set("json",result);//再存入一条数据multi.set("json2",result);//这里引发了异常,用0作为被除数inti=100/0;//如果没有引发异常,执行进入队列的命令multi.exec();}catch(exceptione){e.printstacktrace();//如果出现异常,回滚multi.discard();}finally{system.out.println(jedis.get("json"));system.out.println(jedis.get("json2"));//最终关闭客户端jedis.close();}}}
第二part:springboot整合redis
在springboot中一般使用redistemplate提供的方法来操作redis。
源码分析
@bean@conditionalonmissingbean(name={"redistemplate"})//我们可以自己定一个redistemplate来替换这个默认的!publicredistemplate
第一步:导入依赖
导入依赖
第二步:yml文件配置
yml文件配置
spring.redis.host=127.0.0.1spring.redis.port=6379
第三步:测试
测试
@springboottestclassredis02springbootapplicationtests{@autowiredprivateredistemplateredistemplate;@testvoidcontextloads(){redistemplate.opsforvalue().set("mykey","我是大帅哥");system.out.println(redistemplate.opsforvalue().get("mykey"));}}
第四步:自定义redistemplate
通过开头的源码可以看出,springboot自动帮我们在容器中生成了一个redistemplate和一个stringredistemplate。但是,这个redistemplate的泛型是
自定义redistemplate
@configurationpublicclassredisconfig{@beanpublicredistemplate