Memcache
Memcache 不持久化
支持简单的key-value模式,支持类型单一
一般作为缓存数据库辅助持久化数据库
Redist
几乎覆盖了Memcache的绝大部分功能。
支持数据持久话,主要用作备份和恢复数据
除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list set hash zset 等
一般是作为缓存数据库辅助持久话数据库
常用命令
tar zxvf ‘文件名称’
redis-server 前台开启
后台开启redis
1,去redis.confg 文件搜索 daemonize yes 搜索的话,可以用/ 然后:wq! 保存
2,进入/usr/loacl/bin
3,redis-server /etc/redis.conf 启动命令
ps -ef | grep redis 查看进程
redis-cli 可以通过客户端来连接我们的Redis
redis-cli shutdown 可以进行关闭redis
memchache Vs 多线程 + 锁 vs redis 单线程+多路IO复用
memchache 支持单一类型,redis 支持多种类型
memchache 支持多线程+锁的机制 redis 支持单线路+多路IO复用
memchache 不支持持久话,redis支持持久化
key值常用命令
keys * 查看所有的key
set key(键) val(值)
exists key 判断key 是否存在 1代表存在 0代表不存在
type key 判单key 是什么类型
del 删除key
unlink key 真正的删除会在异步操作
expire key 设置key的过期时间
ttl key 查看key 还有多少秒过期,-1表示用不过期,-2表示已经过期
stnx 不能覆盖,只有当值不存在的时候才会被设置
incr key 让你的值加一
decr key 让你的值减一
incrby key 10 每次加10可以设置
decrby key 10 每次减10可以设置
mset k1 v1 k2 v2 同时可以设置多个
mget k1 k2 k3 同时可以获取多个
msetnx 同时设置多个,它是原子性的,有一个失败都会失败
redis中常用的5大基本数据类型
###String
String类型是一个二进制安全的,意味Redis的string可以包含任何数剧,比如JPG图片或者序列化后的对象。
一个Redis中字符串value最多可以是512M。
List
lpush 左边放
rpush 右边放
lrange 0 -1,就是取全部的意思
lpop 从左边拿值
rpop 从右边拿值 (取出来之后键就不存在了) 值在键在,值亡键亡
rpoplpush 从左边取值放到右边
lindex key 取到指定下标
linsert key before v1 v11 ,在V1前面加上一个值
lrem (可以删除同理)
lset (可以做替换操作)
集合(set)
set提供的功能与list类似是一个列表功能,特殊之外在于set是可以自动排重的。
当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择。
set 是string类型的无序集合,它的底层就是一个hash表,所以添加删除查找的复杂度都是O(1)通过找一次就能找到
常用命令
sadd key v1 v2
smembers key 取出该值的集合
sismember k1 v1 判断k1里面存不存在v1这个值
scard 返回改元素的个数
srem 删除集合中的某个元素
spop key 随便从key里面吐出一个值
srandmember 随机从集合中取出N个值。但是不会从集合中删除。
smove 把一个值移动到另外一个值
hash 类型
hash类型特别适合存储对象
hset key user(字段)value(值)
hget key user(字段)
hmset (可以存储多个值)
hexists(查看一个值是否存在)
hincby 加1
Zset 有序集合类型
zset 是一个有序集合,是一个没有重复元素的字符串集合
zadd(往里面添加值)
zrange key 取值 0-1 withscores(通过这个可以去除他的评分和值) 默认是自动从小到大排序
新的数据类型Bitmaps
redis 事务
redis 事务是一个单独的隔离操作:所有的命令都会序列化,按顺序的执行,事务在执行过程中,不会被其他客户端发送来的命令请求所打断。
multi 开始事务
exex 执行
discard 取消执行
watch 监视一个key
redis 持久话操作
RDB 是一种redis的持久话方式,在指定的时间间隔内将内存的数据集快照写入磁盘 ,它恢复的时候可以直接将快照文件直接读到内存中
RDB 缺点,在最后一次的时候可能数据会丢失
配置redis.conf 可以设置,每30S生成多少K 就进行持久化操作,配置完成之后请重启。
save 手动开始持久话,这个不建议用,如果用了的化,它就只进行持久话操作,其他的都会阻塞
AOF
以日志的形式来记录每个写操作(增量保存),将redis执行所有写指令记录下来(读操作不记录),只需追加问价但不可以改写文件
AOF默认不开启 直接取redis.conf 修改appendonly.aof
如果两个同时开启,系统会默认取AOF的数据
redis 主从复制
主机数据更新后根据配置策略,自动同步到备机的 master/slaver 机制,Master以写为主。Slave以读为主。(也就相当于读写分离)
特点
1,读写分离 (Master以写为主。Slave以读为主)
2,容灾恢复快(当我一台从机挂掉之后,我可以迅速切换到其他从库)
3,一般都是一主多从,有一个挂了,可以随便切换。