2020年10月21日 MySQL默认为3306端口,tomcat默认为8080端口,redis默认为6379端口 cmd命令行启动服务器:redis-server.exe cmd命令行访问服务器:redis-cli.exe -h 127.0.0.1 -p 6379 置键值对:set key value 取出键值对:get key value CONFIG 命令查看或设置配置项:CONFIG GET CONFIG_SETTING_NAME Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 1.字符串的设置就是前面演示的,非常简单
2.hash数据类型,示例: HMSET runoob field1 “Hello” field2 “World”:“OK” HGET runoob field1:“Hello” HGET runoob field2:“World” 说明:Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value,每个 hash 可以存储 232 -1 键值对(40多亿)
3.list数据类型,示例: lpush runoob redis (integer) 1 lpush runoob mongodb (integer) 2 lpush runoob rabitmq (integer) 3 lrange runoob 0 10
“rabitmq”“mongodb”“redis” 说明:Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 基本操作:lpush、rpush、lrange、lpop、rpop4.set数据类型,示例: DEL runoob sadd runoob redis (integer) 1 sadd runoob mongodb (integer) 1 sadd runoob rabitmq (integer) 1 sadd runoob rabitmq (integer) 0 smembers runoob
“redis”“rabitmq”“mongodb” 说明:Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1),集合中的元素是唯一的 基本操作:sadd、smembers、srem5.zset数据类型(sortedset,有序集合),示例: zadd runoob 0 redis (integer) 1 zadd runoob 0 mongodb (integer) 1 zadd runoob 0 rabitmq (integer) 1 zadd runoob 0 rabitmq (integer) 0 ZRANGEBYSCORE runoob 0 1000
“mongodb”“rabitmq”“redis” 说明:Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。 基本操作:zadd、zrange、zrem2020年10月22日 常用命令: keys *:查看所有的键 type key:查看某个键的数据类型 del key:删除指定的key value
持久化: redis是一个内存数据库,当redis服务器关闭时,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中 redis的持久化机制: (1)RDB:默认方式,不需要进行配置 在一定的间隔时间中,检测key的变化情况,然后持久化数据。对性能的影响很小 在redis.windows.conf配置文件中,一定的时间间隔中,检测到一定数量的keys发生改变,就进行数据持久化,生成的是 命令示例:redis-server.exe redis.windows.conf 生成的是rdb格式的文件
(2)AOF:日志记录的方式 可以记录每一条命令的操作,可以每一次命令操作后,持久化数据,对性能的影响比较大 生成的是aof格式的文件
编辑redis.windwos.conf文件 appendonly no(关闭aof) --> appendonly yes(开后aof)每隔一秒进行一次持久化 appendfisync always :每一次操作都进行持久化 appendfsync everysec :每隔一秒进行持久化 appendfsync no :不进行持久化
Java客户端:Jedis,一款Java操作redis数据库的工具
String数据类型代码示例: Jedis jedis = new Jedis(“localhost”); //String数据类型 jedis.set(“username”, “hejundong”); System.out.println(jedis.get(“username”)); jedis.setex(“activecode”, 20, “hehe”); jedis.close(); 如上如示,在jedis的new过程中,使用空参构造,默认值为localhost,6379端口 jedis.setex(“activecode”, 20, “hehe”)//比较有趣的方法,自动删除
hash数据类型代码示例: Jedis jedis = new Jedis(“localhost”); //String数据类型 jedis.hset(“user”, “name”,“hejundong”); jedis.hset(“user”, “age”,“23”); jedis.hset(“user”, “gender”,“male”); System.out.println(jedis.hget(“user”,“age”)); Map<String, String> user = jedis.hgetAll(“user”); Set keySet = user.keySet(); for(String key : keySet){ String value = user.get(key); System.out.println(key + “:” + value); } jedis.close();
list数据类型代码示例: Jedis jedis = new Jedis(“localhost”); jedis.lpush(“mylist”, “a”, “b”, “c”); jedis.rpush(“mylist”, “a”, “b”, “c”); System.out.println(jedis.lrange(“mylist”,0, 100)); System.out.println(jedis.lpop(“mylist”)); jedis.close();
set数据类型代码示例: Jedis jedis = new Jedis(“localhost”); //String数据类型 jedis.sadd(“myset”, “java”,“php”,“c++”); Set set = jedis.smembers(“myset”); System.out.println(set); jedis.close();
sortedset数据类型代码示例: Jedis jedis = new Jedis(“localhost”); jedis.zadd(“student”, 100, “hejundong”); jedis.zadd(“student”, 90, “zhangsan”); jedis.zadd(“student”, 80, “lisi”); System.out.println(jedis.zrange(“student”, 0 , 100)); jedis.close();
Jedis连接池,JedisPool代码示例: JedisPool jedisPool = new JedisPool(); Jedis jedis = jedisPool.getResource(); jedis.set(“hehe”,“haha”); jedis.close(); 对于JedisPool的构造函数,还有各种重载,无非就是对于参数进行各种设置
jedis的连接池工具类 public class JedisPoolUtils { private static JedisPool jedisPool;
static{ //读取配置文件 InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("src/main/jedis.properties"); //创建Properties对象 Properties pro = new Properties(); //关联文件 try{ pro.load(is); } catch (IOException e) { e.printStackTrace(); } //获取数据,设置到JedisPoolConfig中 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal"))); config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle"))); //初始化JedisPool jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port"))); } public static Jedis getJedis(){ return jedisPool.getResource(); }}