Redis学习

1.简单语法

set key
get key
select 1 (切换到1数据库)redis默认有16个数据库
flushall删除全部key
flushdb 删除当前库的key
getrange key 下标区间 (获取区间的字符串)
setrange key 下标区间(替换指定位置的值)
key * (显示全部key)
exists key (是否存在key)
append key “” (追加字符串)
strlen key (获取字符串长度)
incr key (自动加1)
decr key (自动减1)
expire key (设置key 的过期时间)
pexpire key (取消key 的过期时间)
setex key second value (设置key的value的过期时间)
setnx (不存在设置,存在的话设置会失败)分布式锁中经常使用
ttl key (查看剩余时间)
mset key value (设置多个key和value)
getset key value(如何不存在key,返回nil,反之获取原来值并set)

2.List类型

redis里可以把list看错栈,队列,阻塞队列
Lpush key value 从左边push
Rpush key value 从左边push
lrange key 下标区间 (拿到队列的值)
LPOP RPOP (左移除右移除)
LINDEX key 下标 (根据下标获取值)
Llen key (获取队列的长度)
Lrem key 删除的个数(List可以重复) 要删除的value
ltrim key 区间 (根据区间截取list的值 )
rpoplpush (移除列表的最后一个元素,将它其移除到最后一个值中)
lset key 下标 value (根据下标更新值,前提要存在那个value)
linsert key before|after “value” “要插入的value”

3.Set(集合)

set中的值不能重复,随机不重复

sadd key value
smembers key (显示所以的set)
sismember key value(判断key中是否存在value)
scard key (计算元素个数)
srem key value
srandmember key (随机抽取一个元素)
spop key(随机删除函数)
smove 源key 目标key value(移动到另一个集合中)
sdiff key key (查看两个集合哪里不相同 )
sinter key key(交集)
sunion key key(并集)
共同关注,共同爱好

4.Hash(哈希)

Map集合

hset key 键 值
hget key 键
hmset (设置多个key value)
hmget key 键 键 (获取多个值)
hgetall key(获取所有值)
hdel key 键 (删除)
hlen key (查看有多少个键值队)
hexists key 键 (判断是否存在)
hkeys key (只获取所有键)
hvals key (只获取所有值)
hincrby key 键 自增的数值
hdecrby key 键 自减的数值
hsetnx key 键 值 (如果存在则失败)

5.Zset(有序集合)

在set的基础上,增加了一个值
set k1 v1 , zset k1 score1 v1

zadd key score value
zrevrange key 0 -1 (从大到小排序)
zrangebyscore key -inf +inf (从小到大排序)
zrangebyscore key -inf +inf withscores
zrem key value
zcard key (查看有多少个元素)
zcount key min max (获取区间的成员变量)
排行榜,成绩工资排序

6.事务

redis 单条命令保证原子性,但是事务不保证
redis 事务没有隔离级别的概念
redis 事务具有一次性,顺序性,排他性
所有命令在事务中,并没有直接执行,只有发起执行命令才会执行。exec
redis的事务:

  1. 开启事务 (multi)
  2. 命令入队(…)
  3. 执行 (exec)
  4. 取消事务 (discard)

7.锁

悲观锁:
  • 认为什么时候都会出问题,无论做什么都会加锁
乐观锁:
  • 认为什么时候都不会出问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过这个数据
  • 获取version
  • 更新的时候比较version
  • watch (加锁)
  • unwatch (解锁)

8.配置文件

  1. 单位
  2. 包含多种配置文件 include /path/to/local.conf
  3. 网络
  4. 通用GENEARL
  • daemonize yes (以守护进程方式运行,默认是no)
  1. 快照(snapshot)
  2. 主从复制(REPLICATION)
  3. SECURITY(安全)
  4. 限制CLIENTS
  5. APPEND ONLY(AOF配置)

9.REDIS持久化

RBD

在指定的时间内将数据写进磁盘中,单独fork一个子进程来进行持久化,默认的是RDB,一般不需要进行配置

触发机制:
save 的规则满足,会自动触发
执行flushalll命令
退出redis

如何恢复RDB文件:
只需要将RDB文件放在我们redis启动目录就可以,redis启动的时候会自动检查dump.rdb恢复其中数据
config get dir

优点:
适合大规模的数据恢复
对数据的完整性要求不高
缺点:
需要一定的时间间隔,如果redis意外宕机,最后一次修改数据就没有了
fork进程会占用一定的内存空间

AOF

将所有的命令的记录了下来,恢复的时候就会这个文件全部执行一遍,已日志的形式记录每个写操作,°操作不记录,只许追加文件不允许改写文件。默认是不开启的,我们需要手动进行配置

优点:
每秒同步一次,文件的完整性更好
每秒同步一次,可能会丢失一秒的数据
缺点:
aof文件大于rdb,修复的速度比rdb慢
aof运行速度慢于rdb

10.发布订阅

subscribe channel 订阅频道
publish channle message 在频道发送消息
使用场景:

  1. 实时信息
  2. 订阅,关注信息都可以

11.主从复制

每台redis服务器都是主节点,从机只能读不能写,主机可以写。主机中的所有信息都会被从机读取和保存。
要给的配置文件

  1. 端口
  2. 日志名
  3. dump名字
  4. aof名
  5. pid号

变成从机命令:
slaveof host port (认谁做老大)
如果是用的命令行来配合,重启后会变成主机
或者配置文件replication配置
图片组中(80还是不能进行写的操作)80还是不能进行写的操作
slaveof on one 自己成为主机,其他节点可以手打连接到新节点。如果老大恢复了,则需重新连接

12.哨兵模式(自动选老大)

手动选老大费事费力,会有段时间不可以。哨兵是个独立的进程,它需要发送命令来判断redis是否活着的。
哨兵:单机哨兵,多机哨兵。

如何配置哨兵:
需要写一个sentinel的配置文件,sentinel.conf。
sentinel monitor 被监控的名称(自定义) 127.0.0.1 6379 1
1 的作用是当主机宕机了,会投票看看谁是主机。

如果主机回来了,主机就变成从机

优点:
基于主从复制,所有的主从配置优点,它全有
主从自动切换,系统的可用性好
手动到自动,更加健壮
缺点:
集群容量一旦到达上限,在线扩展十分麻烦。
实现哨兵模式的配置很麻烦,有很多种选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值