写在前面:
string | set、get、del |
list | lpush、lpop、lrange |
hash | hset、hget、hgetall、hdel |
set | sadd、smembers、srem |
sortedset | zadd (score)、zrange、zrem |
keys * 、type key、del key |
1. redis
下载
https://www.redis.net.cn/download/
官网下载链接下边有安装步骤和教程:cd到redis目录下,运行make进行编译;然后就可使用了
redis/src目录下:redis-server服务端、redis-cli客户端
默认端口6379
介绍:
高性能的nosql系列 非关系型数据库
常用作高缓存
关系型 和 非关系型:
关系型:数据之间有关联关系,存在硬盘上
非关系型:数据之间没有关联关系,存储kv键值对,存在内存(重启后数据会消失)
缓存:
从缓存中取数据,有--直接取出,没有--从数据库中取数据,放入缓存,返回数据
数据结构:
两列,kv键值对
key是字符串
value有5种类型:String、hash (map格式)、list (linkedlist格式)、set、sortedset
命令操作:
String:set k v; get k; del k;
list:(左边是头,先放的在末尾) lpush k v; lpop k; lrange k start end; (全部: 0 -1) ---对应还有rpush, rpop, rrange
hash:hset k field v; hget k field; hgatall k; hdel k field;
set:sadd k; (没有重复, 添加相同k会覆盖) smembers k; (取值: 全部) srem k v;
sortedset:zadd k score v; (score用来给k排序) zrange k start end [withscore]; zrem k v;
通用命令:keys *; (所有key) type key; (对应v的类型) del key; (删除)
持久化机制:
RBD:默认;在一定的间隔时间中,检测key的变化情况,然后持久化数据
AOF:日志记录方式,记录每一条命令的操作,可在每次操作后持久化数据
redis持久化:
编辑配置文件redis.??.conf,启动时指定配置文件名称
RBD:save 900 1 900秒后,至少一个key改变,持久化一次
-----redis-server.exe redis.windows.conf
-----持久化在rdb文件中
AOF:appendonly no 改为yes
-----appendfsync:always 每次操作都持久化;everysec 每秒;no 不持久化
-----持久化在conf文件中
2. Jedis
Java操作redis的工具(类似JDBC)
使用:
导jar包:jedis-2.7.0.jar、commons-pool2-2.3.jar
setex(k,秒,v) :指定保存时间
Jedis jedis=new Jedis();//空参默认:localhost, 6379
jedis.set("str","abc");
System.out.println(jedis.get("str"));
jedis.close();
连接池 JedisPool
new JedisPool() 可传参:conf,ip,port
JedisPool jedisPool=new JedisPool();
Jedis jedis=jedisPool.getResource();
配置信息:JedisPoolConfig conf=new JedisPoolConfig()
----------conf.setMaxTotal(10); 最大链接数
----------conf.setMaxIdle(10);最大空闲连接
----------更多配置信息可写到一个配置文件,然后写个jedispool的工具类,类读取配置文件