redis数据库2-高级应用

1.高级命令

1.keys *

获取所有key

2.exists判断key是否存在,存在返回1

exists age

3.del删除key为..的元素

del age

4.expire设置一个元素的过期时间。ttl查看元素的剩余时间,-1为永久保存,-2为不存在

set age 20

expire age 10

ttl age

-1

exists age 

0

5.select,选择数据库(0-15个数据库)。move 将当前数据库的元素移动到其他数据库

select 0

set age 30

扫描二维码关注公众号,回复: 1459931 查看本文章

get age 

30

move age 1

get age

nil

select 1

get age 

30

6.persist移除给定key的过期时间

expire age 300

ttl age

292

persist age

ttl age

-1(已经取消过期时间)

7.randomkey随机返回一个key

8.rename 重命名key

rename age new_age

9.type 返回元素的类型

type list1 

list

type set1

set

10.ping测试redis是否能连接

11.echo打印内容

echo a

a

12.quit/exit/ctrl c 退出客户端

13.dbsize 返回当前数据库的key的数目

14.info 查看redis服务器信息

15.config get dir/*  实时传储(打印)收到的dir/*的请求

16.flushdb 清空当前数据库

17.flushall清空所有redis数据库


2.高级应用

1.安全性(给redis.conf增加requirepass密码)

vi redis.conf
requirepass mima
pkill redis-server 
redis-server redis.conf

两张启动方式

a1 redis-cli -a mima

a2 1 redis-cli
a2 2 auth mima

2.主从复制(master与slave数据库同步)

1.slave与master 建立连接,slave发送同步命令
2.master会启动一个进程将数据库快照保存到文件,同时master也会执行其他的存储命令并缓存
3.完成保存后,将文件发送到slave
4.slave将文件保存到磁盘

设置主从:
从机的redis.conf需要配置主机的ip、端口及密码
1.slaveof 192.168.88.89 6379
2.masterauth mima
查看主从关系:info
role:master
slave0:192.168.88.90,6379,online

默认情况下redis数据库充当slave角色时是只读的不能进行写操作。

可以在配置文件中开启非只读:slave-read-only no

更多配置见

3.事务处理multi

multi 打开事物
exec 开始按顺序执行事物
discard 取消事物,清空事物队列

例1:
get age
100
multi
set age 10
set age 20
exec
get age
20

例2:
get age
100
multi
set age 10
set age 20
discard
get age
100

与mysql的事物不同,redis的事物若有一条指令发生错误,实物不会回滚(redis需要改进的地方)

乐观锁:watch 若使用watch监控一个Key,这个元素从调用watch后发生过变化,整个事物会失败。断开连接或使用exec、discard、unwatch都会清除监控。
例:
session1:
get age
10
watch age
multi

session2:
set age 30
get age
30

session1:
set age 20
exec
nil(执行失败)
get age 
30


4.持久化机制

redis需要经常将内存里的数据同步到磁盘实现持久化。

1.快照(默认方式)

快照是将内存中的数据写入到二进制文件,默认文件名dump.rdb。可redis.conf配置发起快照的条件:
save 900 1  (900秒内超过1个key被修改发起)
save 300 10  (300秒内超过10个key被修改发起)
900/300 秒内只会发起一次快照,这样的持久化可能导致数据丢失,所以有aop的方式持久化。

2.aof

aof有更好的持久性,redis会将每一个收到的写命令通过write追加到文件中,重启时,会重新执行文件中的写命令在内存中重建整个数据库

由于os会在内核中缓存write做的修改,所以可能不是立即写入到磁盘,可能导致数据丢失。所以需要redis.conf配置强制os写入磁盘的时机:
appendonly yes
a1 appendfsync always  //收到的写命令立即写入磁盘,性能差,持久化最好
a2 appendfsnc everysec //每秒写入磁盘一次,性能与持久化折中
a3 appendfsyc no //完全依赖os,性能最好,持久化差

5.发布与订阅信息

订阅者可通过subscribe订阅自己感兴趣的消息类型,redis将消息类型称为通道。发布者可通过publish发送特定类型的消息时,订阅该消息类型的全部client会收到此信息
client1    subscribe tv1
client2   subscribe  tv1 tv2
client3或主机  publish tv2 hello

client2 
1) message
2)tv2
3)hello

6.虚拟内存

把不经常访问的数据交换到磁盘上,节约内存开销。

redis.conf配置
vm-enabled yes     开启vm功能
vm-swap-file /tmp/redis.swap    value保存的路径
vm-max-memory 1000000     redis使用的最大内存上限
vm-page-size 32     每个页面32字节
vm-pages 134217728   最多使用多少个页面
vm-max-threads  用于value对象换入工作线程的数量

启动redis时会提示如果确认要使用vm功能需要在redis.conf里加入 really-user-vm yes


猜你喜欢

转载自blog.csdn.net/q975583865/article/details/78375160