Redis的使用
Redis的使用
redis基本命令:
Redis启动命令:Redis-service &
连接Redis : Redis-cli -h 主机名 -p 端口号
select index 切换数据库 初始16个数据库 从0开始15结束
dbsize 查看当前数据库中的key值
查看当前库中所有的key实列 keys *
清空当前数据库实列 : flushdb
清楚所有的数据库实例 : flushall
获取当前redis服务的所有配置信息 : config get *
Redis的五种数据类型:
字符串 :string 单key单value name:zzy
列表 : list 单key多有序value 可重复
集合 : set 单key多无序value 不可重复
对象: hash 单key 对象 列入:student:name:zzy,age:18,sex,man
有序集合: zset :单key多可排序value 不可重复
Redis的操作命令:
key的操作:
keys 通配符 *所有
?匹配一个字符
[] 匹配一个字符并且这个字符要在这个括号中取
exists key值 key值 key值 判断这个key值是否存在 返回存在的个数 不存在返回0
move key值 index数据库下标 把这个key移动到指定的数据库
ttl key值 查看指定key值的最大生命周期 不存在返回-2 没设置最大生命周期返回-1
expire key值 time时间 给指定的key值设置生命周期 到时间自动删除
type key 查看指定key的数据类型 是五种数据结构中的哪一种
rename key newkey 重命名key值
del key key key 删除指定的key 返回实际删除key的数量
string类型的操作:
set key value 设置string类型的数据到redis中
get key 获取指定key的value值 key存在会覆盖之前的value
append key value 给指定key值的value追加内容 返回追加之后的字符串长度 如果key不存在 那么新建一个key并且把value设置为value
strlen key 获取指定key值的 value值的长度
incr key 对指定key值的value(数值)进行加1 运算 如果不存在 设置初始值 为0 在加1
decr key 对指定key值的value进行减1运算 和incr使用方法相同
incrby key offset 数值 对指定key值进行加指定值的加法运算
decrby key offset 数值 对指定key值进行指定值的减法运算
getrange key start end 截取指定key值的value值从下标start到end的字符串 也可以从友向左 -1开始
setrange key start value 指定key的值从start开始被 value覆盖
setex key seconds value 设置key和value的同时给他设置生命周期
setnx key value 设置keyhevalue 如果key存在那么取消设置
mset key value key1 value1 批量设置key 和 value
mget key key1 key2 批量获取key值
msetnx 批量设置key和value 只要有一个key存在时就全部放弃设置
list类型的操作:
lpush key value1 value2 value3 从列表的左侧按顺序依次插入
lrange key start end 查看指定key值的value从下标为start开始到下标end结束 可以用-1表示最后的下标
rpush key value 1 value2 value3 从列表右侧依次插入按顺序插入
lpop key 从指定列表中移除表头的第一个元素
rpop key从指定列表中移除表尾的第一个元素
lindex key index 获取指定key值的指定下标的value值
llen key 获取指定key值的列表的长度
lrem key count value count>0 时从左侧开始移除指定key值的count个 和value值相同的 value count<0时从右侧 count=0时移除全部
set类型的操作:
sadd key value1 value2 望set集合中设置多个值 注意不能重复
smembers key 获取指定key值的 所有value
sismember key member 判断member在指定key集合中是否存在 存在返回1 不存在返回0
scard key 获取指定集合中所有的元素个数
srem key member member 移除指定集合中的指定的元素
spop key count 随机移除指定个个数的元素
srandmember key count 随机在指定集合中获取指定个元素
smove old new member 移动指定集合中的元素到指定集合中去
sdiff key key key 返回第一个集合中由其他集合中没有的元素 (并集)
sinter key key key 获取所有集合中都有的元素 (交集)
sunion key key key 获取所有集合组成的大集合 (补集)
hash类型的操作:
hset key filed value filed value 给指定hash设置多个或一个键值对
hget key filed 获取指定key值和filed的value值
hmset key filed value filed value 批量设置多个键值对
hmget key filed filed 批量获取指定的key值和多个filed 值
hgetall key 获取指定hash 中所由的filed 和 value
hdel key filed filed 删除指定hash中的 多个filed
hlen key 获取指定hash 中的filed的长度
hexists key filed 判断指定的hash中是否存在指定的filed
hkeys key 获取指定hash中所有的filed
hvals key 获取指定hash中所有的value
hincrby key filed number 给指定的hash 的filed的值进行加法运算number
hincrbyfloat key filed float 给指定的hash的filed的值进行浮点加法运算 number
hsetnx key filed 给指定的hash设置filed如果不存在设置成功 如果存在设置失败
zset类型的操作: 不可重复的集合 每个元素会关联一个分数 分数可以重复 但元素不能重复
zadd key score member score member 给zset集合添加一个或多个元素但必须要有source和member 数值和元素
zrange key start end 【withscores】获取指定zset集合中从start开始到end结束的下标值 是否更上数值
zrangebyscore key min max 【withscores】 获取zset中指定范围的元素 是否跟上 score
zrem key member member 删除指定zset集合中的中的元素
zcard key 获取指定zset集合中的所有的元素的个数
zrank key member 获取指定zset集合中的元素的排名(排名从0 开始)
zrevrank key member 获取指定zset集合中的元素的排名 (从大到小排)
zcount key min max 获取指定zset集合中指定范围的元素的个数
zscore key member 获取指定zset集合中指定元素的分数
Redis的配置文件:修改 redis.conf 文件
网络配置:
port : 端口号
bind : 主机ip地址 绑定ip地址
tcp-keepalive:保持连接的时间长
常规配置:
logfile redis输出日志的位置 默认输出到控制台
databases : 初始化数据库实列 默认16个
安全设置:
默认不设置密码 追求性能的高效
requirepass : 设置密码 如果要设置密码的话还要 protected-mode=yes 才可以使用 并且登录的时候 要用redis-cli -h -p -a 密码登录
Redis持久化设置 RDB和AOF:
Redis持久化设置 RDB 和 AOF: 持久化设置是指在redis服务宕机时有重要的数据时把他储存到硬盘中
RDB策略: 在指定时间内达到指定的写操作会自动的进行一次持久化操作 默认(1分钟1w次 5分钟10次 15分钟1次) RDB策略时redis默认的持久化策略
save 修改这个属性可以改变进行持久化操作的设置
dbfilename : 持久化操作到那个文件 默认储存在(dump.rdb)文件中
dir : 持久化操作的文件储藏在那个文件夹 默认在根目录中
AOF策略:生成一个日志文件用来记录每一次的写操作命令 当服务器发生宕机时 从小执行一遍该日志文件 每次redis服务启动时 都会执行一遍该日志文件(效率低下)
appendonly : yes/no 是否开启AOF策略 默认no关闭
appendfilename:AOF策略指定生成的日志文件
appendfsync : AOF异步持久化策略 always 同步 everysec 出厂默认推荐 每秒异步执行一次 no 不及时同步由系统决定何时同步
Redis的事务:
事务:事务是指把一组数据库操作命令一起执行 保证操作原子性 要么同时成功 要么同时失败
redis事务 :允许把一组redis命令放在一起 把命令序列化 按顺序执行 保证一部分的原子性
redis事务的 原子性 :
1)在压入命令时 就发生错误时 所有的命令都不执行 保证了一部分原子性
2) 压入命令时没有发生错误 但在执行命令时有一条命令发生错误那么 那一条发生错误的命令不会执行 其他正确的命令正常执行
命令:
multi : 标志者一个事务的开始
exec : 用来执行一组redis命令
discard : 回滚 清除掉改组所有的 命令
watch : 监控某一个键值 当他发生改变时那么所有的操作都不执行 (锁,多线程的执行)
unwatch : 放弃监控所有的键值
Redis消息的发布和订阅:
redis客户端订阅频道 消息的发布者往频道上发布消息 所有订阅此频道的客户端都能收到该消息
subscribe: ch1 ch2 ch3 订阅一个或多个频道
publish : ch1 消息 给指定频道发布消息
Redis的主从复制(搭建集群):主少从多 读写分离 主写从读 主写同步复制到从 主 (master)从(slave)
查看当前redis服务的配置 : info replication
复制3份redis.conf文件
修改:
port
dbfilename
logfile
pidfile
设置主从关系 设从不设主 : (注意: 一个redis服务可以是从机也可以是主机 但是只要身份有从机的就不能写数据 只能读)
在那个设置从机的服务上 : slaveof 127.0.0.1 6379
全量复制: 一旦主从关系确认 会自动把主机上已有的 所有数据同步复制到从机上
增量复制 : 在主机上增加的数据也会复制到从机上
主写从读 读写分离 : 注意 主机能读写 但从机只能读不能写 主机尽量不要读 (读写分离)
主机宕机:从机原地待命 数据不会在发生改变
主机恢复 : 从机重新连接 没有影响
从机宕机:主机和其他从机没有影响 主机少一个从机
从机恢复 : 不会自动连接主机 而是恢复初始设置变成主机 需要从新设置主从关系
主机宕机 从机上位:
在需要变成主机的 服务器上输入
slaveof no one 断开所有的主从关系 重新设置主从关系
Redis的哨兵模式:主机宕机 从机上位的自动版
创建一个哨兵的配置文件 (网上找)
文件名随意 配置文件内容 ( sentinel monitor dc-redis 127.0.0.1 6379 )
启动哨兵:
redis-sentinel 哨兵配置文件名
如果以前的主机恢复那么他会变成从机
Jedis 的使用 (java连接 reddis服务):
Jedis依赖 两个对象 Jedis(redis) Transaction (事务)