Redis
redis的命令操作
通用命令:
1.查询全部的key:keys *
2.获取键key对应的value的类型:type key
3.删除指定key value:del key
redis的数据结构:key+value
其中key都是字符串
value有5种不同的类型:字符串类型、哈希类型、列表类型、集合类型、有序集合类型
1.字符串类型:
添加:set key value
获取:get key
删除:del key
2.哈希类型
添加:hset key field value
获取:hget key field
删除:hdel key field
获取全部:hgetall key
3.列表类型
lpush key value:将元素加入到列表左端
rpush key value:将元素加入到列表右端
lrange key start end:查询全部元素
lpop key :删除列表最左端元素,并将其返回
rpop key:删除最右端元素,将其返回
4.集合类型
添加:sadd key value
获取全部:smembers key
删除元素:srem key
5.有序集合类型(通过score的值进行排序)
添加元素:zadd key score value
删除元素:zrem key value
查询元素:zrange key start end
查询元素+score:zrange key start end withscores
public class JedisTest {
/**
* Jedis入门
*/
@Test
public void test(){
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
jedis.set("username","zhangsan");
//3.关闭
jedis.close();
}
/**
* String类型的数据结构
*/
@Test
public void test2(){
//1.获取连接,连接本机时可以不写参数
Jedis jedis=new Jedis();
//2.操作
jedis.set("username","zhangsan");
String username = jedis.get("username");
System.out.println(username);
/**
* 存储指定过期时间的 key value
* 将activeCode:1234存入Redis,20秒时候会自动删除
*/
jedis.setex("activeCode",20,"1234");
//3.关闭
jedis.close();
}
/**
* Hash类型的数据结构
*/
@Test
public void test3(){
//1.获取连接,连接本机时可以不写参数
Jedis jedis=new Jedis();
//2.操作
jedis.hset("user","name","lisi");
jedis.hset("user","age","12");
String age = jedis.hget("user", "age");
System.out.println(age);
//获取全部
Map<String, String> users = jedis.hgetAll("user");
//遍历 使用keyset
Set<String> keys = users.keySet();
for (String key : keys) {
String value = users.get(key);
System.out.println(key+":"+value);
}
//3.关闭
jedis.close();
}
/**
* list类型的数据结构
*/
@Test
public void test4(){
//1.获取连接,连接本机时可以不写参数
Jedis jedis=new Jedis();
//2.操作
jedis.lpush("mylist","a","b","c");//从左边添加元素
jedis.rpush("mylist","a","b","c");//从右边添加元素
//根据范围获取全部数据
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
//弹出操作
String ele1 = jedis.lpop("mylist");
System.out.println(ele1);
String ele2 = jedis.rpop("mylist");
System.out.println(ele2);
List<String> mylist1 = jedis.lrange("mylist", 0, -1);
System.out.println(mylist1);
//3.关闭
jedis.close();
}
/**
* set类型的数据结构
*/
@Test
public void test5(){
//1.获取连接,连接本机时可以不写参数
Jedis jedis=new Jedis();
//2.操作
jedis.sadd("myset","迪丽热巴");
jedis.sadd("myset","易烊千玺");
jedis.sadd("myset","张艺兴");
//根据范围获取集合
Set<String> myset = jedis.smembers("myset");
System.out.println(myset);
//3.关闭
jedis.close();
}
/**
* sortedSet类型的数据结构
*/
@Test
public void test6(){
//1.获取连接,连接本机时可以不写参数
Jedis jedis=new Jedis();
//2.操作
jedis.zadd("sortSet",3,"地理");
jedis.zadd("sortSet",5,"英语");
jedis.zadd("sortSet",2,"化学");
//获取元素
Set<String> sortSet = jedis.zrange("sortSet", 0, -1);
System.out.println(sortSet);
//3.关闭
jedis.close();
}
}
redis的持久化
1.Redis是一个内存数据库,当Redis服务重启,获得电脑重启,数据就会丢失。我们可以将redis持久化的保存在硬盘的文件中。
2.Redis的持久化机制:
a.RDB:默认方式,不需要进行配置。默认使用这种机制
在间隔时间内,检测key 的变化情况,然后持久化数据
方法:1.编辑redis-windows.conf文件
2.重新启动redis服务器,并指定配置文件的名称
D:\redis-2.8.9\redis-server.exe redis.windows.conf
b.AOF:使用日志的方式,可以记录每一条命令的操作。可以在每一次操作后,持久化数据
1.编辑 redis-windows.conf文件
appendonly no (关闭AOF)
appendonly no (开启AOF)
Jedis java客户端
一款java操作redis数据库的工具,导入jar包就可以操作redis中的数据。
Jedis连接池:JedisPool
1.创建JedisPool对象
2.调用getResource()方法获取Jedis连接
public class JedisPoolUtil {
private static JedisPool jedisPool;
//静态代码块,调用类时加载
static {
//加载配置文件
InputStream in = JedisPoolUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
//创建properties
Properties pro = new Properties();
//关联文件
try {
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
//获取数据,设置到JedisPoolConfig中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
//初始化JedisPool
jedisPool=new JedisPool(config,pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
}
//连接的方法
public static Jedis getJedis(){
return jedisPool.getResource();
}
public static void main(String[] args) {
Jedis jedis = JedisPoolUtil.getJedis();
System.out.println(jedis);
}
}