Redis知识点汇总

Redis

key-value存储系统,是跨平台的非关系型数据库,数据结构服务器,因为值可以是字符串、哈希、列表、集合和有序集合等类型。

redis简介

  • 完全开源、遵守BSD协议,是一个高性能的key-value数据库
  • 与其他key-value缓存产品的区别
    • 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
    • 不仅仅支持key-value类型的数据,同时还提供list set zset hash等数据结构的存储
    • 支持数据的备份 master-slave数据的备份

redis配置

redis.conf 是redis的配置文件 可以通过CONFIG命令查看或设置配置项

#查询
CONFIG GET CONFIG_SETTING_NAME
#修改
CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

配置项说明

配置项说明
daemonize no守护进程的方式启动 使用yes启用守护进程
port 6379监听端口
bind 127.0.0.1绑定的主机地址
timeout 300当客户端闲置多长后关闭连接 指定为0 表示关闭该功能
loglevel notice指定日志等级 rebug verbose notice warning 默认为notice
databases 16设置数据库的数量 默认数据库为0
requirepass foobare设置redis连接密码,如果配置了连接密码 连接redis时需要提供密码
maxclients 128同一时间客户端的连接数 默认无限制

数据类型

  • string 字符串 一个key最大能存储512M

    SET TestKey "this is a testKey"
    GET TestKey
    
    DEL TestKey
    
  • hash 哈希 每个hash可以存储2^32 - 1 键值对

    HMSET testHashKey field1 "Hello" field2 "World"
    HGET testHashKey field1
    HGET testHashKey field2
    
  • list 列表 按照插入顺序排序,可以添加一个元素到列表的头部或者尾部 最多可以存储2^32 -1元素

    lpush testListKey redis   #左侧插入元素
    lpush testListKey mongodb	
    lpush testListKey rabbitmq
    rpush testListKey mysql	# 右侧插入原色
    lrange testListKey 0 10 # 取list的元素
    
  • set 集合 是string类型的无序集合 集合是通过哈希表实现,添加、删除、查找复杂度都是o(1)

    sadd testSetKey member 
    # 集合内的元素时唯一的 第二次插入的元素将被忽略
    smembers testSetKey
    
  • zset 有序集合 每个元素都会关联一个double类型的分数,redis正是通过分数为集合中的成员进行从大到小的排序,zset的成员是唯一的,但分数score却可以重复

    zadd testZSetKey score member
    zrangebyscore testZScoreKey 0 10000
    

命令

  • 启动redis客户端 redis-cli 启动后可以输入PING 检测redis服务是否启动 --raw 可以避免中文乱码
  • 在远程服务上执行命令 redis-cli -h host -p port -a password

  • DEL key 在key存在时删除key
  • DUMP key 序列化指定的key 并返回序列化的值
  • EXISTS key 检测指定的key是否存在
  • EXPIRE key seconds 指定的key设置过期时间 以秒计
  • EXPIREAT key timestamp 指定的key设置过期时间戳
  • PEXPIRE key milliseconds 设置key的过期时间以毫秒计
  • PEXPIREAT key milliseconds-timestamp 设置key的过期时间戳以毫秒计
  • KEYS pattern 查找所有符合给定模式的pattern的key
  • MOVE key db 把当前数据库的key移动的指定的数据库db中
  • PERSIST key 移除key的过期时间 key将持久保持
  • PTTL key 以毫秒为单位返回key的剩余的过期时间
  • TTL key 以秒为单位,返回key的过期时间
  • RANDOMKEY 从当前数据库中随机返回一个key
  • RENAME key newKey 修改key的名称
  • RENAMENX key newKey 仅当newkey不存在时,将key改名为newKey
  • TYPE key 返回key所存储的值的类型

字符串

  • SET key value 设置指定的key的值
  • GET key 获取指定的key
  • GETRANGE key start end 返回key中字符串值的子字符
  • GETSET key value 将给定的key的值设为value,并返回key的旧值
  • GETBIT key offset 对key所存储的字符串值,获取指定偏移量上的位
  • MGET key1 [key2 …] 获取一个或者多个指定的key的值
  • STRLEN key 返回key所存储的字符串的长度
  • MSET key value [key value …] 同时设置一个或多个key-value对
  • MSETNX key value [key value…] 同时设置一个或多个key-value对 当且仅当所有的key都不存在
  • INCR key 将key中存储的数字值增1
  • INCRBY key increment 将key所存储的值加上给定的增量值
  • INCRBYFLOAT key increment 将key所存储的值加上给定的浮点增量值
  • DECR key 将key中存储的数字值减一
  • DECRBY key decrement 将key所存储的值减去给定的减量值
  • APPEND key value 如果key已经存在并且是一个字符串,APPEND将指定的value追加到key原值末尾

哈希 hash

  • HDEL key field1 [field2] 删除一个或对个hash表字段
  • HEXISTS key field 检查哈希表key中,指定的字段是否存在
  • HGET key fild 获取存储在哈希表中指定字段的值
  • HGETALL key 获取在哈希表中指定key的所有字段和值
  • HKEYS key 获取哈希表中的字段
  • HVALUES key 获取哈希表中的所有值
  • HLEN key 获取哈希表中字段数量
  • HSET key field value 将哈希表中的key的字段field的值设为value
  • HMGET key field1 [field2] 获取所有给定字段的值
  • HMSET key field1 value1 [field2 value] 将多个field-value对设置到哈希表中
  • HSETNX key field value 只有当field不存在时,设置哈希表字段的值

列表list

  • BLPOP key [key2] timeout 移出并获取列表的第一个元素
  • BRPOP key1[key2] timeout 移出并获取列表的最后一个元素
  • LINDEX key index 通过索引获取列表中的元素
  • LINDEX key BEFORE | AFTER pivot value 在列表的元素前或者后插入元素
  • LLEN key 获取列表长度
  • LPOP key 移出并获取列表的第一个元素
  • LPUSH key value1 [value2] 将一个或多个元素插入到列表头部
  • LPUSHX key value 将一个值插入到已存在的列表头部
  • LRANGE key start stop 获取类表指定范围内的元素
  • LREM key count value 移出列表元素
  • LSET key index value 通过索引设置列表元素的值
  • LTRIM key start stop 对一个列表进行修剪, 只保留指定区间内的元素,不在指定区间内的元素将被移除
  • RPOP key 移除列表的最后一个元素 返回值为移除的元素
  • RPUSH key value1 [value2] 在列表中添加一个或多个值
  • RPUSHX key value 为已存在的列表添加值

集合Set

  • SADD key member1 [member2] 向集合添加一个或多个成员
  • SCARD key 获取集合的成员数
  • SDIFF key1 [key2] 返回第一个集合与其他集合之间的差异
  • SDIFFSTORE destination key1 [key2] 返回给定所有集合的差异并存储在destination中
  • SINTER key1 [key2] 返回给定的所有集合的交集
  • SINTERSTORE destination key1 [key2] 返回给定的集合的交集并存储在destination中
  • SISMEMBER key member 判断member元素是否是集合的key的成员
  • SMEMBERS key 返回集合中的所有成员
  • SMOVE source destionation member 将member元素从source集合移动到destination集合
  • SPOP key 移除并返回集合中的一个随机元素
  • SRANDOMMEMBERS key [count] 返回集合中的一个或者多个元素
  • SREM key member2 [member2] 移除集合中的一个或多个元素
  • SUNION key1 [key2] 返回所有给定集合的并集
  • SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在destination集合中

有序集合

  • ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员 或更新已存在的成员的分数
  • ZCARD key 获取有序集合的成员数
  • ZCOUNT key min max 计算有序集合中指定区间的分数的成员数
  • ZINCRBY key increment member 有序集合中对指定的成员分数加上增量increment
  • ZINTERSTORE destination numkeys key [key …] 计算交集并将结果存储在新的有序集合的destination中
  • ZLENCOUNT key min max 在有序集合中计算指定字典区间内成员数量
  • ZRANGE key start stop [WHITSCORES] 通过索引区间返回有序集合指定区间内的成员
  • ZRANGEBYLEX key min max [LIMIT offset count] 通过字典区间返回有序集合的成员

HyperLogLog

  • PFADD key element [element] 添加指定元素到HyperLogLog中
  • PFCOUNT key [key] 返回给定HyperLogLog的基数估算值
  • PFMERGE destKey sourceKey [sourceKey] 将多个HyperLogLog合并为一个HyperLogLog

发布与订阅

  • PSUBSCRIBE patten 订阅一个或多个符合给定模式的频道
  • PUBSUB subcommand [argument [argument]] 查看订阅与发布系统状态
  • PUBLIST channel message 将信息发送到指定的频道
  • PUNSUBCRIBE channel [channel …] 退订频道
  • SUBSCRIBE channel [channel …] 订阅一个或多个频道

事务

单个redis命令执行是原子性的,但redis没有在事务上增加任何维持原子性的机制,所以redis事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做的指令回滚,也不会造成后续的指令不做

  • DISCARD 取消事务
  • EXEC 执行所有事务块内的命令
  • MULTI 标记一个事务块的开始
  • UNWATCH 取消watch命令对所有key的监视
  • WATCH key 监视一个key 如果在事务执行之前这个key被其他命令所改动,那么事务将被打断

redis连接

  • AUTH password 验证密码是否正确
  • ECHO message 打印字符串
  • PING
  • QUIT 关闭当前连接
  • SELECT index 切换到指定的数据库

服务器

服务器命令主要用于管理redis服务

  • BGREWRITEAOF 异步执行一个AOF 文件重写操作
  • BGSAVE 在后台异步保存当前数据库的数据到磁盘
  • CLIENT kill [ip:port] [id client-id] 关闭客户端的连接
  • CLIENT list 获取连接到服务器的客户端连接列表
  • CLIENT GETNAME 获取连接到服务器的客户端连接列表
  • CLIENT SETNAME connect-name 设置当前连接的名称
  • COMMAND 获取redis命令详细数组
  • COMMAND COUNT 获取redis命令总数
  • TIME 返回当前服务器时间
  • CONFIG REWRITE 对启动redis服务器时所指定的redis.conf配置文件进行改写
  • DBSIZE 返回当前数据库的key的数量
  • FLUSHALL 删除所有数据库的所有key
  • FLUSHDB 删除当前数据库的key‘
  • LASTSAVE 返回最近一次redis成功数据保存到磁盘上的时间
  • MONITOR 实时打印redis服务器接收到的命令
  • SAVE 同步保存数据到磁盘

数据持久化

  • SAVE 创建当前数据的备份 该命令将在redis的安装目录中创建dump.rdb文件
  • 如果需要恢复数据,只需将dump.rdb文件移动到redis的安装目录并启动服务。
  • 可以通过CONFIG GET dir来查看安装目录
  • BGSAVE 该命令在后台备份文件

Redis安全

  • 可以通过redis配置文件设置密码参数,客户端连接到redis服务器就需要密码验证。这样redis服务更安全
  • CONFIG GET requirepass 查看是否设置了密码
  • CONFIG SET requirepass设置新的密码,客户端连接服务就需要密码验证
  • AUTH password 进行密码验证

Redis性能测试

  • redis-benchmark 命令是在redis的目录下执行,非redis客户端的内部指令
  • redis-benchmark - n 10000 -q 同时执行10000个请求来检测性能
  • redis-benchmark -h 127.0.0.1 -p 6379 -t set, lpush -n 10000 -q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值