一、安装与启动
1)安装直接到官网下载即可
2)服务的启动和客户端的启动
redis-server redis.config //以redis.config这个配置文件启动redis
redis-cli -p 6379 -a 123456 //-p是端口号,可以修改;-a 是密码,需要再配置文件中配置(requirepass)
二、通用命令
ping | 测试cli客户端网络是否连通服务器 | 返回pong表示成功 |
shutdown | -在redis关闭时候,最好用该命令,不能用kill直接杀掉,否则可能会造成数据的丢失 | |
select | -选择数据库,默认初始化数据库16个,0-15,需要增加则可以在配置文件中指定。 | |
keys | -列出当前数据库的所有key | |
dbsize | -返回当前数据库key的总数 | |
exists | -判断是否存在某个key,如exists user | |
del | -删除某个键值对,如:del user | |
expire | expire user 3600;设置user的过期时间为1个小时 | |
ttl | ttl user;查看user的过期时间 | |
flushdb | -清空当前数据库中的所有数据 | |
flushall | -清空所有数据库中的所有数据 |
三、数据类型
String | -字符串类型;最大可以512M;建议在100kb左右 |
Hash | -hash类型(Map) |
List | -列表类型 |
Set | -集合类型;特点:无序、唯一、Hash(通过Hash实现,所以赠、删、改速度比较快) |
ZSet | -有序集合类型;特点:有序、唯一 |
四、常用指令
1)string常用指令
get | get key | -返回:value |
set | set key value | ok |
mget | -同时获取多个key对应的value | |
mset | -设置多个kv如:mset name 张三 age 30 sex 男 | ok |
del | -删除:del key | |
incr/decr | -如果key的值为数值,则可用incr自增1(decr自减1),如每次调用则自增1: incr age | |
incrby/decrby | -自增自减并指定步长,如,每次自增10: incrby age 10 |
|
2)Hash常用指令
hset | hset 对象类型:id:属性 key value | -如:hset user:1:info name 张三 |
hmset | -保存多个kv | -如:hset user:1:info name 张三 age 30 sex 男 |
hget | -获取key对应的值 | |
hmget | -获取多个kv | |
hgetall | -获取对象的所有key和value | -如:hgetall user:1:info |
hexists | -判断是否存在 | -如:hexists user:1:info |
hlen | -获取对象有几个属性 | -如当前数据库已经调用以上hset例子中的指令,则:hlen user:1:info ,返回值为:3 |
3)List常用指令
rpust | -右侧添加元素 | -如:rpush mylist 1 2 3 |
lpush | -左... | |
rpop | -右侧弹出 | -如:rpop mylist |
lpop | -左侧 | |
llen | -获取长度 | |
lrange | -获取范围,含头不含尾(0 2表示0,1,2),-1表示最后一个。 | -如:lrange 0 2 |
lrange | ... | -如第一个到最后一个:lrange 0 -1 |
4)Set常用指令
sadd | -增加 | sadd user:1:fllow book |
srem | -删除 | |
smembers | -查看 | smembers user:1:follow |
scard | -获取集合的总元素 | scard user:1:follow |
srandmember | -随机获取 | srandmember user:1:follow 2 ,随机获取两个 |
spop | -随机弹出,即获取值后数据被移除 | spop user:1:follow |
sdiff | -差集,两个都不同时存在 | sdiff user:1:follow user:2:follow |
sinter | -交集 | |
sunion | -并集 |
5)ZSet有序集合的常用指令
zadd | zadd key score elements ... | -添加 | -如,添加多个学生考试分数: zadd student:score 100 zhangsan 99 lisi 60 wanger 80 |
zscore | zscore key element | -获取分数(可以理解为排序的序号) | |
zcard | zcard key | -总数 | |
zrank | zrank key element | -获取排名 | zrank student:score zhangsan |
zrem | zrem key element | -删除 | |
zrange | zrange key scope [withscores] | -获得从低到高元素,其中withscores表示返回分数,scope表示范围 | -如,获取所有数据,并排序:zrange student:score 0 -1 withcores |
zcount | zcount key scope [withscores] | -获取区间范围内的元素,并返回排序后的数据的总数 | -如,80分到100分的学生,并排序: zcount student:score 80 100 |
zrangebyscore | zrangebyscore key scope [withscores] | -获取区间范围内的元素,并返回排序后的数据的元素 |
五、redis可视化工具RDM
RDM类似于Mysql的可视化工具Navicat等数据库管理软件,RDM的安装直接从官网下载下来下一步、下一步就OK。
由于出于安全考虑,Redis默认是不允许远程访问的,所有我们需要再配置文件中增加一些配置:
1)bind ip,其中0.0.0.0表示所有的远程电脑都可以访问,正式环境请不要用0.0.0.0;
2)requirepass yourpassword, 设置密码;
3)打开端口,默认6379,若6379修改,则打开修改后的端口。
六、Jedis的使用
Jedis是JAVA语言开发的Redis客户端工具包,用于JAVA和redis进行数据交互;它是对Redis命令的封装,同时Jedis遵循着RESP协议规范,我们可以根据RESP协议定制一个像Jedis一样的工具。
1)引入Jedis Maven坐标
2)创建redis连接通道,并配置密码,添加kv;
Jedis jedis = new Jedis(ip,port,timeout);
try(jedis){
jedis.auth("密码");
jedis.select(0);
jedis.set("name","张三");
}catch(){
...
}
//jedis的方法就是对之前说到的指令的封装,学会命令行操作,jedis就自然会操作了。
//jedis使用后需要调用jedis.close();关闭
七、Jedis连接池(JedisPool)使用
1)创建JedisPool
//连接池配置对象
GenericObjectPoolConfig config = new JedisPoolConfig();
//最多连接池存放对象数
config.setMaxTotal(100);
//最大空闲连接
config.setMaxIdle(50);
//最小空闲连接
config.setMinIdle(10);
//以上三个配置在实际项目中,需要调优,另外建议setMaxTotal、MaxIdle一致即可。
//借出时,测试是否有效
config.setTestOnBorrow(false);
//返还是是否测试
config.setTestOnReturn(false);
//创建时是否测试有效,正式环境时如果Redis和运用程序在同一台服务器时,建议用false,
config.setTestOnCreate(true);
//全借出后,是否等待
config.setBlockWhenExhausted(true);
//全借出后,最长等待时间,若超过时间,则报错
config.setMaxWaitMills(1000);
2)获取Jedis对象(Redis连接通道)
Jedis jedis = null;
try(jedis){ //这里关闭jedis,即jedis.close();是归还jedis给连接池的意思。
JedisPool pool = newJedisPool(config,ip,port);
Jedis jedis = pool.getResource();
....
//获取对象之后其他和之前的一样
}catch(Exception e){
...
}