Redis笔记

数据类型:String   hash   list     无序set  有序set

常用命令:

String

set a b

get a

getset 先获取旧值再设置新值

del a

一个键最多能存512MB

Hash

hset hash1 username ym

hget hash1 username

hmset hash2 username ym password ym age 18

hgetall hash2

hincrby hash1 age 20 某一字段增加某数值 仅对正确数据类型有效

hexists hash1 username

hlen hash1

hkeys hash1  展示该hash所有的key

hvals hash1 展示该hash左右的value

List

lpush lpush list1 1 2 3 4   结果 list1 [4,3,2,1]

rpush rpush list2 1 2 3 4 结果 list2 [1,2,3,4]

lrange list2 0 -1    0代表list的第一个元素   -1 代表最后一个元素   -2 代表倒数第二个元素

linsert list2 before|after  b bbb 向b的前面或后面添加bbb

rpoplpush list1 list2 将list1的最右侧元素挪到list2作为最左侧元素  适用于多个执行队列

rpoplpush list1 list1  将list1的最右侧元素挪到list1的最左侧  适用于单个循环队列

无序Set  无序、不重复。     涉及两个大数据的交集,并集,差集的计算

sadd set1 a b c d

srem set1 b c

smembers set1 取出set1中所有元素

sismember set1 b 判断b在set1中是否存在 存在返回1  不存在返回0

set1 [a c d]

set2 [1 2 3 a b c e]

差集:查看哪些元素属于set1不属于set2

sdiff set1 set2   结果 d     set1与set2 顺序有限制

交集:查看哪些元素既属于set1也属于set2

sinter set1 set2 结果 a c  set1与set2顺序无限制

并集:set1与set2的并集

sunion set1 set2  结果 1 2 3 a b c d e   set1与set2顺序无限制  去除了重复部分

将求出的交集、并集、差集存储到另外一个set集合中

sdiffstore set3 set1 set2  顺序有限制  sdiffstore紧跟的为存储结果集合

 

scard set1  结果3  返回set中结果个数

srandmember set1 随机返回一个set1中 元素     抽奖!!

有序Set  有序、不重复。   排行榜!

zadd zet 100 xiaoming 200 xiaohong 300 xiaozhang   插入  默认升序排列

zscore zet xiaohong   获取某元素的值  结果200

zcard zet  

zrem zet xiaohong xiaoming

范围查询

zrange zet 0 -1 

zrange zet 0 -1  withscores 带分数 升序

zrevrange zet 0 -1  withscores 带分数  降序  排行榜

zremrangebyrank zet 0 1   按照排名删除前两名   按照索引删除

zremrangebyscore zet 199 299  按照分数删除分数在199到299之间的元素  前后都是闭区间

zrangebyscore zet 100 350 withscore limit 0 2           按照分数排序 展示100到250区间内从第1条开始展示2条

zrevrangebyscore zet  650 100 withscores limit 0 1 降序的时候分数区间顺序也要倒着写

zincrby zet 400 xiaohong 增加某元素值

zcount zet 100 300  计算100到300元素个数

zrank zet xiaohong  查询元素下标 结果 2

zrevrank zet xiaohong 倒序查询

通用命令

通配符  *表示任意一个或多个字符    ?表示任意一个字符

匹配任意长度为4位的key

keys ????

匹配key中包含set的key

keys *set*

keys *  展示redis中所有的key

del 删除

exists 是否存在

rename为key进行重命名

rename 旧名字 新名字

type key  获取key的值类型  有序set返回zset

设置key的生存时间 单位秒

若某个key过期了  那么redis就会将其删除

默认为永久存在

expire key 30     设置key生存时间30s

ttl key 查询key的剩余生存时间   若返回-2 则为过期   若返回-1 则为永久存在

消息订阅与发布

发布消息

publish ym1 aaa

订阅单个频道

subscribe      如subscribe  ym1

批量订阅多个频道

psubscribe  如psubscribe ym*

Redis多数据库

Redis默认有16个数据库  分别为0 1 2 3......15

在redis上所做的所有数据操作,默认都是在0号数据库上面操作

数据库之间不能共享键值对

切换数据库  select 数据库名    如select 1

把某个键值对进行数据库移植     move 移植的键 新数据库名   如move password 1

清空当前数据库数据:flushdb

清空服务器数据:flushall

Redis事务-批量操作

目的:进行redis语句批量化执行

Redis执行事务的时候,不对外服务。

multi  标记事务的开始   其后执行的命令都会被存入任务队列在执行exec按顺序执行

exec 执行批量化  执行后就立即退出multi

diacard 不执行批量化  执行后就立即退出multi

Redis持久化

默认情况下:Redis所有的增删改 数据都是在内存中进行操作  断电后 内存中的数据会丢失

持久化策略:

RDB:默认持久化策略

RDB相当于照快照,保存的是一种状态

优点:

  1. 快照保存数据速度极快,还原数据速度极快
  2. 适用于灾难备份

缺点:

  1. 小内存机器不适合使用,RDB机制符合要求就会照快照(随时随地启动,会占用一部分系统资源,突然占用,很可能内存不足直接宕机,宕机后服务器关闭---非正常关闭,内存中数据丢失)  服务器关闭---照快照     key满足一定要求---照快照

RDB何时进行快照

  1. 服务器正常关闭
  2. key满足一定条件

 save 900 1            每900秒(15分钟)至少有一个key发生变化 则照快照

 save 300 10        每300秒(5分钟)至少有10个key发生变化 则照快照

 save 60 10000      每60秒(1分钟)至少有10000个key发生变化 则照快照

例如1:12:00-12:15 一个key发生变化,在12:15照快照

    12:00-12:15 任何key没有发生变化,在12:15不照快照

例如2:12:00-12:05 11个key发生变化  在12:05照快照   在12:15照快照

    12:00-12:05 9个key发生变化  在12:05不照快照   在12:15照快照

例如2:12:00-12:01 11000个key发生变化  在12:01照快照   在12:05照快照   在12:15照快照

    12:00-12:01 9000个key发生变化  在12:01不照快照   在12:05照快照  在12:15照快照

AOF:使用日志功能保存数据操作  默认AOF关闭

适用于内存比较小的计算机

三种策略:

每秒同步:每秒进行一次AOF保存数据   安全性低,节省系统资源

每修改同步:只要有key变化,就进行AOF保存数据   比较安全,但是浪费效率

不同步(默认)   不安全

AOF操作:只会保存导致key变化的语句(增删改)

AOF配置:

everysec(默认):每秒同步

always:每修改同步

no:不同步

编辑redis.conf

 

优点:

  1. 持续性占用极少量的内存资源

缺点:

  1. 日志文件会特别大,不适用于灾难恢复
  2. 恢复效率远远低于RDB

 

原文地址:https://www.cnblogs.com/yuming2018/p/11510713.html