初始redis,人们总说它是一个缓存,后来才明白,其实就是个数据库,可是这个数据库不是把数据持久化到硬盘,而是存在内存中。所以写入和读取速度都是比通常数据库好比mysql快的多,因此能够做为缓存。java
redis是一个非关系型数据库,什么叫非关系型数据库呢,这是相对于关系型数据库来讲的。关系型数据库就是咱们常常见到的mysql、oracle、sqlserver等数据库,它们的存储读取都是靠sql来操做的,并且都有表结构。而非关系型数据库是没有表结构的,因此也不能用sql来操做。事实上,redis数据库中存储的都是形如key-value形式的数据,看似像一个map,存值的时候,能够set,取值的时候,能够get。mysql
想要使用redis,首先须要启动一个redis服务,正如咱们使用mysql的时候也须要先安装mysql服务,并启动,在windows系统上,有封装好的免安装版redis服务,解压后,管理员权限运行redis目录下的redis-server.exe,就启动了一个redis服务,以下,redis的默认端口是6379redis
接下来,在程序中咱们试着往里存数据,新建一个java项目,引入jedis的jar包sql
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
接着,咱们用main方法测试数据库
public static void main(String[] args) { //链接redis //第一个参数为redis服务器的地址,这里是本机 //第二个参数为端口,redis默认为6379 Jedis jedis = new Jedis("localhost",6379); //其余操做,见下文中的代码 }
在redis存取值时,都是用上述redis对象来操做windows
redis能够存储五种类型结构的数据,strings、hashs、lists、sets、sorted sets缓存
下面一一介绍服务器
首先就是strings,这个就至关于java中的Map<String,String>类型数据结构
//存一对儿key-value值 jedis.set("name","zhangsan"); //存好多对儿key-value值 jedis.mset("sex","1","age","27"); //存一对儿key-value值,而且设置有效期,单位为秒 jedis.setex("score",15,"60"); //给key为name的value值后面拼接追加字符串lisi jedis.append("name","lisi");
利用可视化工具看到的为:oracle
score的颜色是灰色,那是由于它是临时值,在15秒后就会被自动删除掉
//获取一个key的值 String a = jedis.get("name"); //获取多个key的值 List list = jedis.mget("name","age","sex");
第二种数据结构为hashs,这个至关于java中的Map<String,Map<String,String>>;
//添加key为url,值为【key为google,value为www.google.com】的记录 jedis.hset("url","google","www.google.com"); //添加key为url,值为【key为baidu,value为www.baidu.com】的记录 jedis.hset("url","baidu","www.baidu.com"); //批量设置 Map<String,String> map = new HashMap<String,String>(); map.put("name","zhangsan"); map.put("sex","1"); map.put("age","27"); jedis.hmset("userinfo",map);
//获取url中的google对应的值 String a = jedis.hget("url", "google"); //获取url中google、baidu对应的值 List b = jedis.hmget("url","google","baidu"); //获取userinfo中存储的全部信息 Map c = jedis.hgetAll("userinfo");