我爱编程

Redis

2017-12-15  本文已影响0人  yzw12138

一、什么是redis

二、redis应用场景

三、Redis安装环境

(一)Linux下安装Redis

四、Redis的五种数据类型

Paste_Image.png
// setnx 表示如果没有存在key值则创建该条数据,否则不创建
// setex 设置键值的过期时间
127.0.0.1:6379> set string zhangsna
OK
127.0.0.1:6379> get string
"zhangsna"
127.0.0.1:6379> setex string 10 zhangsna
OK
127.0.0.1:6379> get string
"zhangsna"
// 10秒后
127.0.0.1:6379> get string
"nil"
// 修改内容,将string从第二个制服开始改为yyy
127.0.0.1:6379> setrange string 2 yyy
// 批量操作mset、mget

string自增操作incr(incrby num:增加num)

127.0.0.1:6379> set string2 4
OK
127.0.0.1:6379> get string2
"4"
127.0.0.1:6379> incr string2
(integer) 5
127.0.0.1:6379> get string2
"5"

减操作decrby

127.0.0.1:6379> decrby string2 2
(integer) 3
127.0.0.1:6379> get string2
"3"
127.0.0.1:6379> lpush list1 12
(integer) 1
(1.00s)
127.0.0.1:6379> lpush list1 13
(integer) 2
127.0.0.1:6379> rpop list1
"12"
// 获取所有元素
127.0.0.1:6379> lrange list1 0 -1
1) "13"
2) "12"127.0.0.1:6379> lrange list1 0 -1
1) "13"
2) "12"

llen输出List中有几个元素,元素可以重复

127.0.0.1:6379> lpush list 12
(integer) 1
127.0.0.1:6379> lpush list 13
(integer) 2
127.0.0.1:6379> lpush list 13
(integer) 3
127.0.0.1:6379> llen list
(integer) 3
127.0.0.1:6379> sadd set1 12
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 0
127.0.0.1:6379> scard set1
(integer) 2
127.0.0.1:6379> hset hash1 key1 12
(integer) 1
127.0.0.1:6379> hget hash1 key1
"12"
127.0.0.1:6379> hset hash1 key2 13
(integer) 1
127.0.0.1:6379> hset hash1 key3 13
(integer) 1
127.0.0.1:6379> hlen hash1
(integer) 3
127.0.0.1:6379> hset hash1 key3 14
(integer) 0
127.0.0.1:6379> hget hash1 key3
"14"
127.0.0.1:6379> hmget hash1 key1 key2 key3
1) "12"
2) "13"
3) "14"
127.0.0.1:6379> zadd zset 10.1 val1
(integer) 1
127.0.0.1:6379> zadd zset 11.2 val2
(integer) 1
127.0.0.1:6379> zadd zset 9.2 val3
(integer) 1
127.0.0.1:6379> zcard zset
(integer) 3
127.0.0.1:6379> zrange zset 0 2 withscores
1) "val3"
2) "9.1999999999999993"
3) "val1"
4) "10.1"
5) "val2"
6) "11.199999999999999"
127.0.0.1:6379> zrank zset val2
(integer) 2
127.0.0.1:6379> zadd zset 12.2 val3
(integer) 0
127.0.0.1:6379> zrange zset 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "11.199999999999999"
5) "val3"
6) "12.199999999999999"
127.0.0.1:6379> zadd zset 12.2 val2
(integer) 0
127.0.0.1:6379> zrange zset 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "12.199999999999999"
5) "val3"
6) "12.199999999999999"

五、redis的持久化方式

# appendfsync always
appendfsync everysec
# appendfsync no
image.png

应用场景

常用命令

keys * // 取出所有key
exists name // 是否存在key为name
del // 删除键
expire // 设置某一键的过期时间
ttl // 查询键有效时长
move //将key转移另一个数据库
persist // 移除key的过期时间
randomkey // 随机返回一个key
dbsize // 返回当前数据库键数
info // 获取服务器信息
config get // 返回相关配置的值
flushdb // 删除当前数据库所有key
flushall // 删除所有数据库key

六、主从复制(陪从不配主)

一主两从

image.png
image.png
slaveof IP地址 端口号
image.png

注意:
1、redis 的配置完主从复制后,主库用于写入操作,从库用于读取,此时从库无法成功写入数据;
2、如果此时主库停止服务,则此时从库处于待命,主库服务恢复后,从库自动连接;

哨兵模式

由于普通的主从,在主机挂倒之后,从库无法写入,redis 功能无法使用。因此想要寻找一种方法来解决该问题。哨兵模式就是后台监控主库,当主库故障无法工作时,在从库中通过投票的方式选出一个充当主库来继续工作;

sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
1 代表从库得票数大于 1 时被选择做主库
image.png

七、内存淘汰机制

名称 描述
volatile-lru 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
volatile-lfu 从已设置过期时间的数据集中挑选最不经常使用的数据淘汰
volatile-ttl 从已设置过期时间的数据集中挑选将要过期的数据淘汰
volatile-random 从已设置过期时间的数据集中挑选任意数据淘汰
allkeys-lru 当内存不足写入新数据时淘汰最近最少使用的Key
allkeys-random 当内存不足写入新数据时随机选择key淘汰
allkeys-lfu 当内存不足写入新数据时移除最不经常使用的Key
no-eviction(默认) 当内存不足写入新数据时,写入操作会报错,同时不删除数据

注意:

上一篇 下一篇

猜你喜欢

热点阅读