文章目录
- Redis是什么,有什么特点,用于哪些场景?
- Redis常用的5种数据类型简单介绍以及操作
- Redis常用命令
- Redis事务的使用
- Redis持久化的2种方式
1.Redis是什么,有什么特点,用于哪些场景?
- Redis底层使用C语言编写,是一个非关系型数据库
- 采用键值对的结构存取存取数据,常见的非关系型数据库模型的一种(列模型、键值对模型、文档模型),类似于Java的HashMap,因此在查找和操作的复杂度都是O(1)
- 数据存在内存中,支持持久化,拥有丰富的数据类型(string、hash、set、sorted set、list)
- 支持事物,操作都是原子性,所有要么全部执行,要么都不执行
- 可用于缓存服务、消息队列、分布式锁、分布式session
2. Redis常用的5种数据类型简单介绍以及操作
- String:可存储int、float、string,其中int类型可以增减操作
192.168.1.84:0>select 0 //选择数据库
"OK"
192.168.1.84:0>set string1 'Hellow Word' //赋值语法:set key value
"OK"
192.168.1.84:0>get string1 //查看语法:get key
“Hellow Word”
192.168.1.84:0>set string2 0
"OK"
192.168.1.84:0>incr string2
"1"
192.168.1.84:0>get string2
"1"
192.168.1.84:0>decrby string2 1
"0"
192.168.1.84:0>get string2
"0"
192.168.1.84:0>set string3 2.5
"OK"
192.168.1.84:0>get string3
"2.5"
- List:list是一个有序列表,允许数据重复,可用于消息队列
192.168.1.84:0>select 1
"OK"
192.168.1.84:1>lpush lists 11 //在lists表头插入数据
"1"
192.168.1.84:1>lpush lists 12
"2"
192.168.1.84:1>lpush lists 11
"3"
192.168.1.84:1>llen lists //获取lists长度
"3"
192.168.1.84:1>rpop lists //弹出lists最后一个节点
"11"
- Set:set是一个无序列表,不允许数据重复
192.168.1.84:0>sadd set1 10 //添加set1元素
"1"
192.168.1.84:0>sadd set1 11
"1"
192.168.1.84:0>sadd set1 8
"1"
192.168.1.84:0>sadd set1 8 //不允许重复数据
"0"
192.168.1.84:0>scard set1 //set的长度
"3"
192.168.1.84:0>sismember set1 8查看set1中是否存在8
"1"
192.168.1.84:0>srem set 8
"0"
- Hash:hash是一个无序列表,不允许数据存在同一个key,散列类型
192.168.1.84:0>hset hash1 key1 1 //给hash1的key赋值
"1"
192.168.1.84:0>hget hash1 key1 //查看hash1中的key
"1"
192.168.1.84:0>hset hash1 key2 2
"1"
192.168.1.84:0>hset hash1 key3 3
"1"
192.168.1.84:0>hlen hash1 //查看hash1的长度
"3"
192.168.1.84:0>hset hash1 key1 1
"0"
192.168.1.84:0>hmget hash1 key1 key2 key3 //查看hash1中多个key
1) "1"
2) "2"
3) "3"
- ZSet:Zset是一个自动按数据大小自动排序,不允许数据重复数据
192.168.1.84:0>zadd zset1 1.1 var1 //在zset1中添加变量并赋值
"1"
192.168.1.84:0>zadd zset1 2.1 var3
"1"
192.168.1.84:0>zadd zset1 9.2 var2
"1"
192.168.1.84:0>zadd zset1 1.2 var2 //覆盖var2的值
"0"
192.168.1.84:0>zrange zset1 0 2 withscores //数据下标0到2的数据
1) "var1"
2) "1.1000000000000001"
3) "var2"
4) "1.2"
5) "var3"
6) "2.1000000000000001"
192.168.1.84:0>zrank zset1 var2 //查看var2所在zset1的下标
"1"
192.168.1.84:0>zcard zset1 //查看zset1的长度
"3"
Redis常用命令
192.168.1.84:0>keys * //查看数据库0所有key
1) "set1"
2) "zset1"
3) "hash1"
192.168.1.84:0>type set1 //查看key的类型
"set"
192.168.1.84:0>move set1 1 //将key移动至数据库1
"1"
192.168.1.84:0>keys *
1) "zset1"
2) "hash1"
192.168.1.84:0>select 1 //定位到数据库1
"OK"
192.168.1.84:1>keys set1
1)"set1"
192.168.1.84:1>del set1 //删除key
"1"
4.Redis事务的使用
- multi 标记一个事务的开启 ,类似于begin transcation
- exec 执行所以事务块的命令,类似commit transcation
- discard 取消事务,放弃执行事务块内的所有命令,类似于rollback transcation
- 事务中的命令都是串行执行的
- 事务执行期间redis不会再对其他的客户端提供任何服务,从而保障事务中的命令原子化执行
192.168.1.84:0>multi //开启事务,期间服务不对外提供服务
"OK"
192.168.1.84:0>set string1 'begin transcation'
"QUEUED"
192.168.1.84:0>get string1
"QUEUED"
192.168.1.84:0>exec //提交上述的执行命令,如果报错事务取消
1) "OK"
2) "begin transcation"
192.168.1.84:0>multi //开启事务,期间服务不对外提供服务
"OK"
192.168.1.84:0>set string1 'update value'
"QUEUED"
192.168.1.84:0>discard //取消事务,不提交上述的执行命令
"OK"
192.168.1.84:0>get string1
"begin transcation"
5.Redis持久化的2种方式
redis默认采用RDB持久化方式
- redis在运行期间,将满足条件的数据存入到rdb文件中
- 当redis宕机发生是,直接拷贝rdb文件进行使用就行
- redis开始持久化的使用,会创建一些子进程,帮助加载数据
- 如果redis忽然宕机,一些创建没有多久的数据,并没有满足条件,会丢失
- redis通过开启子进程来帮助数据持久化,在大量数据集的情况下,肯导致服务器停顿
- 数据需要满足以下redis-conf配置中的条件,才能进行持久化
save 900 1 //900秒中至少1个key发送变化,才能进行持久化
save 300 10 //300秒中至少10个key发送变化,才能进行持久化
save 60 10000 //10000秒中至少60个key发送变化,才能进行持久化
- redis中配置了文件名称和地址分别是
dbfilename dump.rdb //文件名称
dir ./ //文件地址
AOF持久化方式
- 支持3种同步策略,每秒同步,每修改同步,不同步
appendfsync always //每秒同步
appendfsync everysec //每修改同步
appendfsync no //不同步
- 采用append追加模式,数据写入AOF日志完整
- 如果AOF日志过大,redis可以自动启动重写机制,将修改的数据写入到磁盘当中
- AOF包含一个格式非常清晰易于理解的日志文件,用于记录所有的修改操作。通过这个文件就可以完成数据的重建
- AOF持久化性能小于RDB,并且文件大小大于RDB
- 更换方式,修改redis-conf内容,如下
appendonly yes
appendfilename "appendonly.aof"