Redis

set Key value 添加kv键值对
get key 根据key获取value
select 0-15 切换数据库 redis默认有16个库 索引从0到15
keys * 查询库中所有的key
keys K? 模糊查询所有带k的key
exists key 判断有无这个key
dbsize 获取数据库中存放数据的个数
flushdb 清空当前数据库
flushAll 清空所有数据库
move key 2 将这个key 移动2号库
ttl key 查看当前key剩余存放时间 默认为-1 表示永不过期 -2 表示已过期 (但是redis中的数据默认是存放在内存中的,当关闭机器时会自动清空,但是也可以配置数据的持久化)
expire key 10 设置当前key的存放时间为10秒,到期自动删除(不是访问不到,是直接删除)
del key 删除这个key
string========
set k1 v1
set k1 v2
get k1 ------->v2 说明发生了覆盖而不是错误

type key 查看这个key中value的数据类型

append key 1234 对这个key中的value值拼接1234
strlen key 获取这个key中value的长度 (相对于value为string类型而言)
incr key 如果key’中存放的是数字 则对数字进行+1
decr key 如果key’中存放的是数字 则对数字进行-1

incrby key 3 如果key’中存放的是数字 则对数字进行+3 可以设置加的多少
decrby key 3 如果key’中存放的是数字 则对数字进行-3 可以设置减的多少
getrange key start end 表示截取这个key中value 从start 位置 到 end -1 代表末尾
setrange key start xxx 表示从这个key对应value 的strat位置开始替换对应位数为xxx
setex key 10 value 设置key value 存活10s 键秒值 set exist
sexnx key value 如果没有这个key再存放 有的话不改变 set if not exist

mset k1 v1 k2 v2 k3 v3 同时存放多个键值对
mget k1 k2 k3 同时获取多个键的值
msetnx k1 v1 k2 v2 同时存放多个键值对 且要保证每个键在之前都没有创建过

=list==
lpush key v1 v2 v3 添加列表list每次添加到左侧
rpush key v1 v2 v3 添加列表list每次添加到右侧
lrange key start end 从左侧开始遍历key中存放的列表

lpop list 从列表的左侧弹出一个元素
rpop list 从列表的右侧弹出一个元素(出栈)

lindex list index 获取列表中对应索引的值
llen list 查看list长度
lrem list 2 3 表示从list中删除2个3

rpoplpush list1 list2 将list1执行rpop后出栈的数据 执行lpush到list2
linsert key before/after 值1 值 2 将值2添加到值1的前或后
=set========
sadd key member1 [member2] 向集合中添加一个或多个数据(数据不能重复)

scard key 获取集合中成员个数
smembers key 返回集合所有成员
sismember key member 判断member是否为key对应集合的成员
sdiff key1 [key2] 返回第一个集合与其他集合之间的差异
sinter key1 [key2] 返回给定所有集合的交集
sunion key1 [key2] 返回所有集合的并集
srem key member1 [member2] 移除集合key中的一个或多个成员
spop key 移除并返回集合的一个随机元素
srandommember key [count] 获取集合中指定个数个随机元素
smove key1 key2 memeber 将key1集合中的member 迁移到key2集合中
hash============
hset key field value 将哈希表 key 中的字段 field 的值设为 value 。 同一个key 和 field 会发生覆盖
hmset key field value field value 同时设置多个field 和value
hmget key field1 [field2] 获取所有给定字段的值(可以同时获取多个)
hgetall key 获取在哈希表中指定 key 的所有字段和值
hdel key field1 [field2] 删除一个或多个哈希表字段
hexists key field 查看哈希表 key 中,指定的字段是否存在。
hlen key 获取哈希表中字段的数量
hkeys key 获取所有哈希表中的字段
hvals key 获取哈希表中所有值。
hincrby key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。
hincrbyfloat key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
hsexnx key field value 只有在字段 field 不存在时,设置哈希表字段的值。
zset=========
zadd key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
zrange key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员
zrangebyscore key min max [WITHSCORES] [LIMIT] 通过分数返回有序集合指定区间内的成员
( 例: zrangebyscore zset01 10 (25 表示获取 10<=score<25 之间的score对应的值
zrangebyscore zset01 10 25 表示获取 10<=score<=25 之间的score对应的值
zrangebyscore zset01 (10 (25 表示获取 10<score<25 之间的score对应的值 )
zrem key member [member …] 移除有序集合中的一个或多个成员
zcard key 获取有序集合的成员数
zcount key min max 计算在有序集合中指定区间分数的成员数
zrank key member 返回有序集合中指定成员的索引

==redis持久化
save time changes 代表开启rdb模式的持久化 表示time时间内 数据库发生了changes次变化则会进行持久化记录生成dump.rdb文件,一般丢失最后一次数据,如果执行了flushall会清空数据库同时因此dump.rdb文件中的数据也是空,因此一般需要进行备份

执行save 命令会将生成的数据存放到dump.rdb文件中 默认会在下次启动redis时读入数据,此过程不能进行数据库操作
bgsave表示异步执行存入数据到dump.rdb文件,在此过程中仍然可以进行redis数据库操作
redis-check-dump --fix dump.rdb 可以修复dump.rdb文件

appendonly yes 代表开启aof模式的持久化
aof 是指记录redis的所有写操作到apeendonly.aof文件中,默认每秒钟进行记录,一般只会丢失一秒钟的数据,每次启动redis时会先加载并且执行其中的写操作,从而达到数据的持久化
aof和rdb可以同时存在如果都没有错误,启动时会执行aof
如果aof文件发生错误,即出现不符合文件格式的内容,则会启动失败 文件修复指令为 redis-check-aof --fix appenonly.aof

aof持续记录写操作到appenonly.aof文件中会导致文件的膨胀影响效率因此新增了重写机制rewrite 当aof文件大小超过设置的阈值时会启动aof的文件内容进行文件压缩
只保留可以恢复数据的最小指令,比如多个incr key 可以设置为set key 具体的值符合incr命令后的值,可以使用命令bgrewriteaof进行压缩

重写原理:aof持续增长过大时会fork一个新的进程将文件重写(也是先写临时文件最后在rename,和rdb有点类似),其过程是遍历新进程中的内存数据
,每条记录都有一个set语句,重写aof文件的操作并没有读取旧的aof文件而是将整个内存中的数据库内容用命令进行重写重写了一个新的aof文件

触发重写的条件: redis会记录上次重写时的aof大小,当aof文件大小是上次重写后的大小的一倍且大于64m

aof的优势可以更灵活地设置同步记录数据,保证了数据的准确性完整性
劣势:aof的文件大小一般更大于rdb 因此恢复的速度较慢于rdb ,运行速率慢于rdb,每秒同步策略较好,不同步效率和rdb相同

=redis事务=====
multl 开启事务
开启事务后输入操作数据库的指令将会被存放的队列中
exec 提交事务
提交事务后执行队列中的命令 完成事务
discade 放弃事务
开启事务后存入队列中的指令将不再被执行

全体连坐:当开启事务后输入队列中的指令出现错误(指令格式有问题),则队列中的所有指令都不再被执行
冤头债主: 当开启事务后输入队列中的指令,提交后执行出现错误(指令不能执行但是格式没有问题 比如set k1 q incr k1 该指令不能正常执行),
则队列中的中其他指令会继续正常执行,该条执行发生错误

悲观锁:顾名思义就是很悲观,每次拿数据时候都会认为别人会进行修改,因此每次拿数据时都会上锁,
这样别人想要拿数据时候就会block直到他拿到锁,才能进行数据操作
乐观锁:顾名思义就是很乐观,每次去拿数据时候都会认为别人不会进行修改,所以不会对表进行上锁,但是为了保证数据的准确性会判断一下在此期间别人有没有进行修改数据,一般通过版本来来进行判断,比如每行数据都会加一条version字段,在执行了数据库更新操作之后就会对version进行更新,如果同时有人进行更新操作但是拿到的数据的version在同一时间进行了变更,则不能进行操作,需要重新获取数据继续更新操作 (乐观锁策略:提交的版本必须大于当前数据库中的版本才能执行更新)

watch监控: 采用 watch key [key…] 开启监控一个或多个key 如果在事务提交之前这些key被其他命令所改动过,则事务将会被打断不会被执行 监控命令将在事务执行完毕后关闭
unwatch 取消对所有key的监视

=redis消息订阅发布===========
SUBSCRIBE channel [channel …] 订阅给定的一个或多个频道的信息。
PUBLISH channel message 将信息发送到指定的频道。
PSUBSCRIBE pattern [pattern …] 订阅一个或多个符合给定模式的频道。 (比如psubscribe new* 代表订阅一切带有new+字符串的频道)

=redis主从复制===========

同时开启多个redis服务
info replication 命令查看role: 如果为maste代表为主机 slave 代表为从机

salveof 主机ip 端口号 表示将其作为该主机的从机

主机可以进行读写操作 但是从机只能进行读命令 且从机会将主机的所有数据复制到从机中 不是在执行salveof 主机ip 端口号命令后才得到主机新的数据
一主二仆:一台主机挂两台从机
主机停机后从机依然保持从机的角色等待主机到位
从机停机后角色改为主机,必须重新执行salveof 主机ip 端口号命令连接到主机,或者通过配置文件配置,才能作为该主机的从机
薪火相传: 一台主机对应一个从机 ,该从机下又挂着一台从机
反客为主: 一仆二主情况下主机停机,原本情况是两台从机等待主机启动, 现在执行选择任意一个从机执行slaveof no one命令则会将其重新作为主机 另一台从机可以选择继续等待,也可以执行salveof 主机ip 端口号命令作为新主机的从机

哨兵模式:通俗来说就是反客为主的自动版,当主机停机时,从机会自动变成主机供以使用 通过sentinel.conf 配置启动哨兵
,主机停机时,哨兵会在各个从机进行投票选取一个作为新的主机 ,当原来的主机恢复后就会作为新的主机的从机

jedis============
1.连接redis
2.常用API
3.redis事务
4.redis监控机制
5.redis主从复制读写分离
6.JedisPool

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值