一,概述
1.redis是一款高性能的nosql系列的非关系型数据库
2. 下载:下载链接
3.命令操作
<1>redis数据结构
*redis存储的是:key-value,其中key是字符串,value有五种不同的数据类型结构
****字符串类型:string
****哈希类型:hash
****列表类型:list
****集合类型:set
****有序集合类型:sortedset
<2>字符串类型
存储
set key value
获取
get key
删除
del key
<3>哈希类型
存储
hset key filed value
获取
hget key filed
获取所有的键值对
hgetall key
删除
hdel key filed
<4>列表类型
存储
lpush key value(左侧添加)
rpush key value(右侧添加)
获取
lrange key start end(范围获取)
删除
lpop key(删除列表最左边的元素,并将元素返回)
rpop key(删除列表最右边的元素,并将元素返回)
<5>集合类型
set
存储
sadd key value
获取
smembers key(获取set集合中所有元素)
删除
srem key vlaue(删除set集合中的某个元素)
sortedset
存储
zadd key score value
获取
zrange key start end
删除
zrem key vlaue
<6>通用命令
keys *:
type key:获取键对应的值的类型
del key:删除指定的key value
4.持久化
<1>redis是一个内存数据库,当redis服务器或者电脑重启时数据会丢失,我们可以将redis内从中的数据持久化保存到硬盘文件中
<2>RDB(默认方式,无需配置,默认使用这种机制)
*在一定的间隔时间中,检测key的变化情况,然后持久化数据
*编辑redis.windows.conf文件
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
*持久化数据存储在dump.rdb中
<3>AOF(日志记录的方式,可以记录每一条命令操作,每一次命令操作后,持久化数据)·
*编辑redis.windows.conf文件
//默认是no表示关闭,yes为开启
appendonly no
//每次操作都执行持久化
appendfsync always
//每一秒进行一次持久化
appendfsync everysec
//不进行持久化
appendfsync no
二,Jedis
1.操作string
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class JedisTest {
@Test
public void test(){
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
//存储
jedis.set("name","sysy");
//获取
System.out.println(jedis.get("name"));
//删除
jedis.del("name");
System.out.println(jedis.get("name"));
//指定过期时间
jedis.setex("activecode",20,"hehe");//将键为activecode值为hehe存入redis,20秒后自定删除
//3.关闭连接1
jedis.close();
}
}
2.操作set&&sortedset
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class JedisTest {
@Test
public void test(){
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
//存储
jedis.sadd("set","1","2","2","3");
//获取
System.out.println(jedis.smembers("set"));
jedis.zadd("sortedset",1,"2");
jedis.zadd("sortedset",2,"1");
System.out.println(jedis.zrange("sortedset",0,2));
//3.关闭连接1
jedis.close();
}
}
3.操作list
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class JedisTest {
@Test
public void test(){
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
//存储
jedis.lpush("list","a");
jedis.rpush("list","b");
jedis.lpush("list","c");
//获取
System.out.println(jedis.lrange(":list",0,1));
System.out.println(jedis.lpop("list"));
System.out.println(jedis.rpop("list"));
//3.关闭连接1
jedis.close();
}
}
4.操作hash
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class JedisTest {
@Test
public void test(){
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
//存储
jedis.hset("people","name","sy");
jedis.hset("people","age","19");
//获取
System.out.println(jedis.hget("people","name"));
System.out.println(jedis.hgetAll("people"));
//3.关闭连接1
jedis.close();
}
}
5.Jedis连接池:jedisPool
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class JedisTest {
@Test
public void test(){
JedisPool jedisPool=new JedisPool();
Jedis jedis=jedisPool.getResource();
jedis.set("name","zaf");
jedis.close();
}
}