1.命令操作
1.redis的数据结构
*redis存储的是key,value格式的数据,其中key都是字符串,value有五种不同的数据结构
*value的数据结构
1)字符串类型String
2)哈希类型hash:map格式
3)列表类型list:linkedlist格式
4)集合类型set
5)有序集合类型sortedset
2.字符串类型 string:
(1)存储:set key value
(2)获取:get key
(3)删除:del key
3.哈希类型 hash:
(1)存储:hset key field value
(2)获取:
*hget key field:获取指定的field对应的值
*hgetall key:获取所有的field和value
(3)删除:hdel key field
4.列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
1.添加:
lpush key value:将元素加入列表左边
rpush key value:将元素加入列表右边
2.获取:
lrange key start end :范围获取
3.删除:
lpop key:删除列表最左边的元素,并将元素返回
rpop key:删除列表最右边的元素,并将元素返回
5.集合类型 set :不允许重复元素
1.存储:sadd key value
2.获取:smembers key:获取set集合中所有的元素
3.删除:srem key value:删除set集合中的某个元素
6.有序集合 sortedset:不允许重复元素,且元素有顺序
1.存储:zadd key score value:
2.获取:zrange key start end
3.删除:zren key value
7.通用命令:
1.keys *:查询所有的键
2.type key:获取键对应的value的类型
3.del key:删除指定的key value
2.持久化
1.redis是一个内存数据库,当redis服务器重启或者电脑重启,数据会丢失,可以将redis内存中的数据持久化保存到硬盘的文件中。
2.redis持久化机制:
(1)RDB:默认方式,不需要进行配置,默认就使用这种机制
*在一定的间隔时间中,检测key的变化情况,然后持久化数据
1.编辑redis.windwos.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
2.重启redis服务器,并指定配置文件名称
D:\Javaweb2018\day23_redis\资料\redis \windows-64 (redis-2.8.9>redis-serWer.exe relis.windows.conf
(2)AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据(不推荐,性能消耗大)
1.编辑redis.windwos.conf文件
appendonly no(关闭aof) --> appendonly yes(开启aof)
#appendfsync always :每一次操作都进行持久化
#appendfsync everysec :每隔一秒进行一次持久化
#appendfsync no :不进行持久化
3.Java客户端 Jedis
*Jedis:一款java操作redis数据库的工具
*使用步骤:
1.下载jedis的jar包
2.使用
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
jedis.set("username","zhangsan");
//3.关闭连接
jedis.close();
Jedis操作各种数据结构
1)字符串类型String
set
get
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);//如果使用空参,默认值localhost 6379
//2.操作
//存储
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);
//可以使用setex()方法存储可以存储指定过期时间的key value
jedis.setex("activecode",20,"hehe ");
//3.关闭连接
jedis.close();
2)哈希类型hash:map格式
hset
hget
hgetall
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);//如果使用空参,默认值localhost 6379
//2.操作
//存储hash
jedis.hset("myhash","name","zhangsi");
jedis.hset("myhash","age","24");
jedis.hset("myhash","gender","male");
//获取hash
String hget = jedis.hget("myhash", "name");
System.out.println(hget);
//获取hash的所有map中的数据
Map<String, String> myhash = jedis.hgetAll("myhash");
//keyset
Set<String> strings = myhash.keySet();
for (String string : strings) {
//获取value
String s = myhash.get(string);
System.out.println(string+" "+s);
}
//3.关闭连接
jedis.close();
}
3)列表类型list:linkedlist格式
lpush / rpush
lpop / rpop
lrange start end :范围获取
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
//list存储
jedis.lpush("mylist","a","b","c");
jedis.rpush("mylist","a","b","c");
//list范围获取
List<String> mylist = jedis.lrange("mylist", 0, -1);
System.out.println(mylist);
//list弹出
String mylist1 = jedis.lpop("mylist");
String mylist2 = jedis.rpop("mylist");
System.out.println(mylist1);
System.out.println(mylist2);
//3.关闭连接
jedis.close();
4)集合类型set
sadd
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
//set存储
jedis.sadd("myset1","java","php","c++");
//set获取
Set<String> myset1 = jedis.smembers("myset1");
System.out.println(myset1);
//3.关闭连接
jedis.close();
5)有序集合类型sortedset
zadd
//1.获取连接
Jedis jedis=new Jedis("localhost",6379);
//2.操作
//sortedset存储
jedis.zadd("mysortedset",3,"哈哈");
jedis.zadd("mysortedset",30,"aaa");
jedis.zadd("mysortedset",25,"bbb");
//获取
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
System.out.println(mysortedset);
//3.关闭连接
jedis.close();
3.jdis连接池:JedisPool
使用:
1.创建JedisPool连接池对象
2.调用方法:getResource()方法获取Jedis连接
//0.创建一个配置对象
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(50);
jedisPoolConfig.setMaxIdle(10);
//1.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(jedisPoolConfig,"localhost",6379);
//2.获取连接
Jedis jedis = jedisPool.getResource();
//3,使用
jedis.set("hehe","haha");
//4.关闭 归还到连接池中
jedis.close();