天天看点

Redis实战笔记Redis 数据库

Redis 数据库

一、 概要

1. 特点

  1. 用于抽象数据类型的 DSL
  2. 内存存储
  3. 基础数据结构 API
  4. 编码风格
  5. 避免代码复杂
  6. 两层 API
  7. 以优化为乐

2. 数据类型

  1. 键值对(字符串->字符串)
  2. 哈希
  3. 列表(链表)
  4. 集合:差并交
  5. 有序集合 = 列表 + 集合
  6. 位图(严格上说不算是一种数据结构)
  7. HyperLogLogs 一种概率数据结构

3. 底层数据结构

  1. ziplist 压缩列表(整数 + 字符串)
  2. hashtable 哈希表
  3. skiplist 跳表
  4. 整数集合
  5. 字符串
  6. 链表

4. 键过期策略

(1)noeviction policy

默认策略:永不过期

(2) LRU

  1. 前提:存在已设置过期时间的键,
  2. volatile-lru 删除最近最少使用的键
  3. allkeys-lru 删除全部键
  4. 注意:不准确,默认选取 5个键作为样本,删除最少使用的一个

(3)random

  1. volatile-random
  2. allkeys-random

二、五种数据类型

0. 基本命令

  • 获得匹配键名
KEYS pattern           
  1. ? --匹配一个字符
  2. * --匹配任意个字符
  3. [] --匹配括号间的任一字符,‘-’ 表示一个范围
  4. x --匹配字符 x (特殊字符需要用 转义)
  • 判断键存在
EXISTS key           
  • 删除
DEL key [key ...]           
  • 获取类型
TYPE key           

1. 字符串

  • 获取/设置
GET key --获取键值
SET key value --设置键值

MGET key [key ...] --获取多个键值
MSET key [key ...] --设置多个键值           
STRLEN key --长度
**APPEND key value** -- 追加           
  • 整型
INCR key --自增 1
DECR key --自减 1
INCRBY key increment --自增某个整数
DECRBY key decrement --自减某个整数           
  • 浮点
INCRBYFLOAT key increment --自增某个数
DECRBYFLOAT key decrement --自减某个数           
  • 位操作
GETBIT key offset --获取某二进制位的值
SETBIT key offset value --设置某二进制位的值

BITCOUNT key [start] [end]** --统计【一定范围内】二进制位为 1 的个数
BITOP operation destkey key [key ...] --位运算:operation可取值【OR、AND、XOR、NOT】

BITPOS key 1|0 [start end]** --获取键值第一个二进制位为 1 的偏移量           

2. 散列

  • 基本
HSET key field value
HGET key field

HMGET key field value [field value ...]
HMSET key field value [field value ...]

HGETALL key --获取全部键值

HKEYS key --获取字段名

HVALS key --获取字段值

HLEN key --统计字段数量

HDEL key field [field ...] --删除字段           
  • 检测存在
HEXISTS key field [field ...]

HSETNX key field value --值不存在时赋值           
  • 运算
HINCRBY key field increment --为整型键值加 1           

3. 列表

  • 添加
LPUSH key value [value ...] --左添
RPUSH key value [value ...] --右添

LINSERT key BEFORE|AFTER pivot value --在 pivot 前|后插入元素

LSET key index value --设置指定索引的值           
  • 获取
LINDEX key index --获取指定索引的值

LRANGE key start stop --获取部分(通过索引)           
LPOP key --左弹出
RPOP key --右弹出

LREM key count value --删除前 count 个值为 value 的元素(count 为负则从后面数起)

LTRIM key start end --删除指定索引范围之内的元素           
  • 转移
RPOPLPUSH source destination --右弹出并左添到另一个列表           

4. 集合

SADD key member [member ...]           
SREM key member [member ...]

SPOP key --随机弹出一个元素           
SMEMBERS key

SRANDMEMBER key [count] --取数不大于集合元素数量时,随机取 count 不重复个元素(count 为负时可能取得重复元素)           
SISMEMER key [value ...]           
  • 统计
SCARD key           
SDIFF key [key ...] --差集
SINTER key [key ...] --交集
SUNION key [key ...] --并集           
  • 运算并存储
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIONSTORE destination key [key ...]           

5. 有序集合

  • 增或改
ZADD key score member [score member ...]           
ZSCORE key member

ZRANGE key start stop [WITHSCORES] --取指定范围元素【带值】
ZREVRANGE key start stop [WITHSCORES] --按分数排序,取指定范围元素【带值】

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] --取指定范围元素【带值】           
ZINCRBY key increment member --自增 1           
  • 数量
ZCARD key

ZCOUNT key min max --指定范围内           
ZREM key member [member ...]

ZREMRANGEBYRANK key start stop

ZREMRANGEBYSCORE key min max           
  • 排名
ZRANK key member --降序

ZREVRANK key member --升序           

6. 位图

  1. 提供实时分析
  2. 更高效地利用存储空间
setbit key index value

getbit key index

bitcount key --统计           

7. HyperLogLogs

pfadd key member [member...] --设置

pfcount key --统计已被设置的个数           

三、事务

  • 生命周期
MULTI --开始

// .... 其他指令

EXEC --执行           
  • 错误显示
ERRORCOMAND key           
  • 监控
WATCH key --监控键值被修改后不执行下一条命令

UNWATCH --取消监控           
EXPIRE key seconds --定义(更新)生存时间

TTL key --查询剩余生存时间

PERSIST key --取消过期时间设置(临时->永久)

EXPIREAT key UNIXTIME --时间为秒

PEXPIREAT key UNIXTIME --时间为毫秒           
  • 排序
SORT key [BY field] [ASC|DESC] [LIMIT offset count]
(LIMIT:跳过前 offset 个元素,取 count 个元素)6

SORT key ALPHA --按字典           

四、其他

  1. 安全配置 redis.conf / redis.cnf
  • bind 127.0.0.1 设置只允许本机访问
  • requirepass XXXXXXXXX 设置密码
  • AUTH XXXXXXXX 发送密码

注意:(敲黑板啦!)

  1. 索引为负时,从键值末尾数起。如 index = -3,表示倒数第 3 个位置。