笔记-JavaWeb学习之旅19
redis:redis是一款高性能的nosql系列的非关系型数据库
nosql: not only sql ,意即“不仅仅是sql”,是一项全新的数据库理念,泛指非关系型数据库
redis的数据及结构:
redis储存的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
value的数据结构:
1.字符串类型 string
存储方式:set key value
获取方式: get key
删除方式: del key
2.哈希类型 hash:相当于map格式
存储方式: hset key field value(hset myhash username lisi),(hset myhash password 123)
获取方式: hget key field(hget myhash username)
删除方式: hdel key field
3.列表类型 list :linkedlist格式,支持重复元素
存储方式:lpush key value:将元素加入列表左边 (rpush加入右边)
获取方式:lrange key start end :范围获取
删除方式:lpop key :删除列表左边元素(rpop删除列表右边优速)
3.集合类型 set :不允许重复元素
存储方式:sadd key value
获取方式:smembers key(获取所有元素)
删除方式:srem key value
4.有序集合类型 sortedset:不允许重复元素,且元素有顺序
存储方式:zadd key score value(每一个元素都关联一个score,按照score排序)
获取方式:zrange key start end [withscores](:查询所有元素,加上withscores会获取到分数)
删除方式:zrem key value
通用命令
1. keys * : 查询所有的键
2. type key : 获取键对应的value的类型
3. del key:删除指定的key value
持久化:redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘中,确保数据不会对视
redis持久化机制:
rdb:默认方式,不需要配置,默认使用
aof:日志记录的方式,可以记录每一天命令的操作。
java客户端 jedis
jedis:一款java操作redis数据库的工具
package com.data.jedis; import com.data.util.jedispoolutils; import org.junit.test; import redis.clients.jedis.jedis; import redis.clients.jedis.jedispool; import redis.clients.jedis.jedispoolconfig; import java.util.list; import java.util.map; import java.util.set; public class testjedis { //字符串操作 @test public void test1(){ //获取连接 jedis jedis = new jedis("localhost",6379); //2.存储操作 jedis.set("username","zhangsan"); //获取 string username = jedis.get("username"); system.out.println(username); //可以使用setex()方法储存可以指定过期时间 jedis.setex("activecode",20,"123");//20秒后自动删除该键 //关闭连接 jedis.close(); } //hash数据结构操作 @test public void test2(){ //获取连接 jedis jedis = new jedis("localhost",6379); //2.存储操作 jedis.hset("user","username","zhangsan"); jedis.hset("user","age","22"); jedis.hset("user","gender","male"); //获取 string user = jedis.hget("user","username"); system.out.println(user); map<string,string> map = jedis.hgetall("user"); set<string> keys = map.keyset(); for(string key :keys){ system.out.print(key); string value = map.get(key); system.out.println(":"+value); } //关闭连接 jedis.close(); } //list集合结构 @test public void test3(){ //获取连接 jedis jedis = new jedis("localhost",6379); //2.存储操作 jedis.lpush("username","a","b","c");//cba jedis.rpush("username","a","b","c");//abc //弹出 string lpop1 = jedis.lpop("username");//c string rpop1 = jedis.rpop("username");//c system.out.println(lpop1);//c system.out.println(rpop1);//c // //范围获取 list<string> list = jedis.lrange("username",0,-1); system.out.println(list); //关闭连接 jedis.close(); } //set集合 @test public void test4(){ //获取连接 jedis jedis = new jedis("localhost",6379); //2.存储操作 jedis.sadd("myset","a","b","c","c");//不可以重复 //获取 set<string> myset = jedis.smembers("myset"); system.out.println(myset); //关闭连接 jedis.close(); } //sortedset集合 @test public void test5(){ //获取连接 jedis jedis = new jedis("localhost",6379); //2.存储操作 jedis.zadd("mysorteset",50,"张三"); jedis.zadd("mysorteset",30,"李四"); jedis.zadd("mysorteset",40,"王五"); //获取 set<string> mysorteset = jedis.zrange("mysorteset",0,-1); system.out.println(mysorteset); //关闭连接 jedis.close(); } //使用连接池 @test public void test6(){ //配置连接对象 jedispoolconfig config = new jedispoolconfig(); config.setmaxtotal(50); config.setmaxidle(50); //创建jedis连接池对象 jedispool jedispool = new jedispool(config,"localhost",6379); //获取连接 jedis jedis = jedispool.getresource(); //存储数据 jedis.set("hehe","heihei"); //获取数据 string s = jedis.get("hehe"); system.out.println(s); jedis.close(); } @test public void test7(){ jedis jedis = jedispoolutils.getjedis(); jedis.set("hello","world"); string s = jedis.get("hello"); system.out.println(s); jedis.close(); } }
配置jedis连接池工具类
package com.data.util; import redis.clients.jedis.jedis; import redis.clients.jedis.jedispool; import redis.clients.jedis.jedispoolconfig; import java.io.ioexception; import java.io.inputstream; import java.util.properties; public class jedispoolutils { private static jedispool jedispool;//定义连接池对象 //定义配置文件 static{ inputstream is = jedispoolutils.class.getclassloader().getresourceasstream("jedis.properties"); properties pro = new properties(); try { pro.load(is);//把配置加载进入内存 } catch (ioexception e) { } //获取参数,并且设置配置 jedispoolconfig config = new jedispoolconfig(); config.setmaxtotal(integer.parseint(pro.getproperty("maxtotal")));//参数需要int类型,传递进来的是字符串,需要转型 config.setmaxidle(integer.parseint(pro.getproperty("maxidle"))); //初始化jedispool jedispool = new jedispool(config,pro.getproperty("host"),integer.parseint(pro.getproperty("port"))); } //创建jedispool工具类 public static jedis getjedis(){ return jedispool.getresource();//该方法返回jedis } }
上一篇: c# .Net随机生成字符串代码
下一篇: 好不容易双休在家