一.redis基本操作
常用关键字 | 关键字的解释 | 关键字示例 |
del |
作用:删除指定key的value 参数列表: key 指定的key |
del key1 |
expire |
作用:设置key的存在时间 参数列表: key 指定的key second 过期时间 |
expire key1 5 (以秒为单位) |
keys |
作用:返回指定模式的的key 参数列表: pattern 匹配的字符串 |
keys * (这里是返回当前数据库的全部key,还有?,要查找的是符号需要加 "/" 转义) |
migrate |
作用:移动指定key到指定的redis的数据库里 参数列表: host 目标主机的IP port 目标redis所在端口号 key 想要移动的key destination-db 目标数据库的库号 timeout 超时时间 超过这个时间还没移动完就报错 |
migrate localhost 6380 key1 0 5000 (要在两个不同的redis间移动才可以,同一个redis移动会报错) |
move |
作用:移动指定key到指定数据库里,不过是在同一个redis 参数列表: key 需要移动的key db 目标数据库的库号 |
move key1 2 (redis默认有16个数据库,默认是用0,可以通过redis.conf来修改数据库个数) |
persist |
作用:持久化指定的key 参数列表: key 需要持久化的kye |
persist key1 |
rename |
作用:重命名指定的key 参数列表: key 需要重命名的key newkey 新的名字 |
rename key1 key2 |
select |
作用:切换数据库 参数列表: index 要切换的数据库的库号 |
select 1 |
ttl |
作用:显示key的剩余时间 |
set key1 long ex 5 ttl key1 |
ex |
作用:设置key的存在时间 |
set key1 ex 10 |
setnx |
作用:只有没有指定key的时候才插入成功 |
setnx key1 long |
mset |
作用:同时插入多个键值对 |
mset name long age 20 |
incr |
作用:对value加一 |
set key1 1 incr key1 |
decr |
作用:对value减一 |
set key1 1 decr key1 |
exists |
作用:判断key是否存在 |
exists key1 (存在返回1,不存在返回0) |
... |
二.List基本操作
Lpush 从列表左边插入值
Rpush 从列表右边插入值
Lrange 获取一个列表的值,需要指定开始结束下标(-1表示最后一个)
Lpop 返回并移除表头的值
Rpop 返回并移除表尾的值
Lrem(LIst remove)移除与给定的值相同的元素并设置要移除的数量
Lset通过指定下标名来设置值
Lindex通过下标返回值(这里取值的下标需要注意它是与你存入的下标是相反的,如果你存入的是在第一位,那么去就需要从最后取)
Linsert插入值到指定下标处
Llen返回指定列表长度
还有几个R开头的命令,这里介绍一个Rpush作用是插入数据到表尾
三.set的基本操作
Sadd 增加元素
Scard返回元素数量
Sismember 判断这个值是否已经存在这个列表里
Smembers 返回这个列表里全部的值
Smove原子的从一个集合移动到另一个集合里
Srem移除集合中的一个或多个元素
Sunion返回多个集合的并集
四. Zset(有序的Set)
zadd 传入一个member的集合,每个value的前面都有一个score,zset就是以此为依据来排序
zrange 通过key获取zset的全部member,加上WITHSCORES就会把分数值一同显示
zrem 姗迟指定key的zset中指定的member
zcard 返回指定key的zset的总数
zincrby 对指定的member的score加上指定的分数
zcount 返回在一个分值区间中的member的数量
zrank 返回指定member的排名(从零开始排)
zscore 返回指定member的的分数
zrevrange 使用方法与range一样只是以倒序排列
。。。
五.hash
hash是redis可以存多个键值对的数据结构,在解决session跨域问题的时候,可以通过这个来模拟session的数据结构
命令 | 具体解释 | 示例 |
hset |
作用:新建一个hash,如果指定的hash已经存在则是增加,不会再新建 参数列表: key 不用说了 field 你的键值对的键 value 你的键值对的值 |
hset key1 name longxianfeng hset key1 age 20 (一次只能存入一个键值对,多个键值对要分多次存) |
hlen |
作用:查看hash集的长度 |
hlen key1 |
hvals | 作用:查看指定hash的全部的value | hvals key1 |
hget |
作用:查看指定hash的指定fieldd的值 参数列表: key ... field 你要查询的键值对的键 |
hget key1 name |
hgetall | 作用:查看指定hash的全部键值对 | hgetall key1 |
hdel | 作用:删除指定kye与field的value | hdel key1 name |
六.redis的持久化
Bgsave(backgruand save)用于后台异步保存数据到磁盘,这个命令会后台自动执行,
save 持久化数据会阻塞主线程(不推荐)
config set dir /user设置rdb文件保存路径(重启失效,推荐在xml里设置),默认在bin目录下
redis的持久化文件类型有rdb与aof两种,rdb是二进制的,aof是字符类型的,aof与rdb同时存在就优先使用aof
rdb持久化的优缺点:
优点:
1,压缩后的二进制文,适用于备份、全量复制,用于灾难恢复
2,加载RDB恢复数据远快于AOF方式
缺点:
1,无法做到实时持久化,每次都要创建子进程,频繁操作成本过高
2,保存后的二进制文件,存在老版本不兼容新版本rdb文件的问题
aof持久化的流程:
1,所有的写入命令(set hset)会append追加到aof_buf缓冲区中
2,AOF缓冲区向硬盘做sync同步
3,随着AOF文件越来越大,需定期对AOF文件rewrite重写,达到压缩
4,当redis服务重启,可load加载AOF文件进行恢复
关于aof持久化的相关配置的解释:
appendonly yes //启用aof持久化方式
appendfsync always //每收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec //每秒强制写入磁盘一次,性能和持久化方面做了折中,推荐
no-appendfsync-on-rewrite yes //正在导出rdb快照的过程中,要不要停止同步aof
auto-aof-rewrite-percentage 100 //aof文件大小比起上次重写时的大小,增长率100%时,重写
auto-aof-rewrite-min-size 64mb //aof文件,至少超过64M时,重写
七.其他命令
Config get返回运行中readis的指定项目的配置信息 支持 *
select 切换数据库
dbsize返回当前数据库中key的数量
info以一种易读的文本格式返回数据库的各种信息
最后欢迎加入我自建的学习资料分享群,群里有各种免费的资料,java,大数据,汇编,分布式,数据库,框架等,网路安全等等,进群即可在文件中免费下载
没有任何套路 ,群号:830101760