Redis教程

Redis 笔记

本文主要是介绍Redis 笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Redis

Redis 是 key-value 数据库

Redis 特点

  • 数据持久化

  • 支持多种数据结构

  • 支持数据备份

启动服务

  • 前台启动

    redis-server
    
  • 后台启动

    redis-server &
    
  • 指定配置文件启动

    redis-server /etc/redis.conf &
    

关闭服务

  • 通过 kill 命令

    ps -ef | grep redis # 查看 pid
    kill -9 pid
    
  • 通过 redis-cli 命令关闭

    redis-cli shutdown
    

Redis 客户端

  • 不需要账号密码就能连接,只需要给出 IP 和端口

  • 作用

    通过网络连接到 Redis 服务器,从而实现跟 Redis 服务器的交互

  • redis-cli 是 redis 自带的客户端,使用 redis-cli 就可以启动 redis 的客户端程序

    默认连接本机上 6379 端口上的 redis 服务

  • 指定 redis 端口

    redis-cli -p 6380
    
  • 连接指定机器上的 redis 服务

    redis-cli -h ip -p port
    

关闭客户端

exit

quit

Redis 基本知识

基本知识-1

  • 自带的性能测试工具,可以测试每十万次操作所耗的时间

    redis-benchmark
    
  • 查看 redis 服务是否正常开启

    ping
    

    正常的话会返回 pong

  • 查看 redis 服务器的统计信息

    查看全部

    info
    

    查看指定信息

    info [信息段]
    

    查看集群信息

    info Replication
    

基本知识-3

  • Redis 启动后会自动创建十六个数据库,你爱用不用

  • Redis 中的数据库实例只能由 redis 服务来创建和维护,开发人员不能自行创建和修改数据库实例

  • Redis 创建的数据库实例中编号为 0-15,开发人员使用时通过编号来使用

  • 可以通过配置文件来指定 Redis 创建的数据库个数

  • Redis 创建的数据库实例占用的存储空间很小,所以不会造成太多的存储空间的浪费

  • 默认情况下,客户端连接的是 0 号数据库实例

  • 切换数据库

    select databaseIndex
    

基本知识-3

  • 查看当前数据库有多少条数据(key)的数量

    dbsize
    
  • 查看当前数据库实例中所有的 key

    keys *
    
  • 清空当前数据库实例

    flushdb
    
  • 清空所有的数据库实例

    flushall
    
  • 查看 Redis 中所有的配置信息

    config get *
    

    查看 Redis 的端口号

    config get port
    

Redis 的五种数据结构

对 Redis 来说,所有的键都是字符串

  • String 字符串类型

    String类型是二进制安全的,意思是 redis 的 string 可以包含任何数据。如数字,字符串,jpg图片或者序列化的对象。但最大是 512 m

  • Hash 哈希

    是一个 HashMap,本身是键-值对结构

  • List 双端链表

    是有序的,value 可重复,可以通过下标取出对应的 value 值,左右两边都能进行插入和删除数据

  • Set 集合

    集合类型也是用来保存多个字符串的元素,但和列表不同的是集合中

    1. 不允许有重复的元素,
    2. 集合中的元素是无序的,不能通过索引下标获取元素,
    3. 支持集合间的操作,可以取多个集合取交集、并集、差集。
  • Zset 有序集合

    有序集合和集合有着必然的联系,保留了集合不能有重复成员的特性,区别是,有序集合中的元素是可以排序的,它给每个元素设置一个分数,作为排序的依据。

    (有序集合中的元素不可以重复,但是score 分数 可以重复,就和一个班里的同学学号不能重复,但考试成绩可以相同)

操作命令

都是针对 数据类型 来设计的

  • 有关 key 的操作命令

    查看 key

    keys pattern
    

    Pattern 可使用通配符

    通配符:

    通配符描述
    *0 到多个字符
    单个字符
    []选择[]内的一个字符,例如wo[or]d,匹配word,wood,但不匹配world,woord

    查看以 k 开头的 key

    keys k*
    

    判断 key 在数据库中是否存在,存在回 1,不存在回 0

    exists key
    

    判断制定的多个 key 有多少个是存在的,返回值是存在的 key 的数量

    exists k1 k2 k3
    

    移动某个 key 到某个数据库中,这里 index 表示数据库编号

    move k1 index
    

    设置 key 的生存时间

    expire key seconds
    

    查看 key 的剩余生存时间

    ttl key
    

    如果没设置生存时间返回 -1 ,如果 key 不存在则返回 -2

    查看 key 的数据类型

    type k1
    

    重命名 key

    rename oldKey newKey
    

    删除制定 key

    del k1
    

    删除多个 key,返回值是实际删除的数量

    del k1 k2 k3
    
  • 关于 string 类型数据的操作命令

    将 string 类型的数据设置到 redis 中,如果 key 已存在,则会把原来的 key 覆盖掉

    set 键 值
    

    从 redis 中获取 string 类型的数据

    get zsname
    

    追加字符串,返回值是追加后字符串的长度

    append key value
    

    如果 key 不存在就会相当于 set

    获取字符串数据的长度

    strlen key
    

    将字符串数值进行 +1 ,返回值是 +1 后的结果

    incr key
    

    如果 key 不存在,首先设置一个 key,值初始化为 0 ,然后进行 incr 运算,要求 key 所表示的 value 必须是数值,否则报错

    同理,对字符串数值 -1

    desc key
    

    引申,将字符串数值进行 + offset

    incrby key offset
    

    同理进行 - offset 操作

    descby key offset
    

    获取字符串的子字符串,索引从 0 开始,闭区间

    getrange key startIndex endIndex
    
    getrange zsname 0 -1
    

    用 value 覆盖从下标为 startIndex 开始的字符串,返回更改后的字符串,能覆盖几个字符就覆盖几个字符

    setrange key startIndex value
    

    设置字符串同时,设置他的最大生命周期

    setex key seconds value
    

    安全设置 key,当以前 key 不存在时才会进行设置

    setnx key value
    

    批量将 string 类型的数据设置到 redis 中

    mset key1 value1 key2 value2 key3 value3
    

    批量从 redis 中获取 string 类型的数据,不存在时返回 nil

    mget key1 key2 ley3
    

    对应地有 msetnx

  • 关于 list 的操作命令

    特征:单 key - 多 value,事实上 value 的下标从 0 开始

    一个 key 对应多个 value ,多个 value 之间有顺序,最左侧是表头,最右侧是表尾,但是每个元素的下标可以用负数来表示

    使用情况:一个key 对于多个 value

    将一个或多个值依次插入到列表的表头,类似链表的添加到表头,返回成功插入的个数

    lpush key v1 v2 v3
    

    获取指定列表中指定下标区间的元素,支持负数索引

    lrange key startIndex endIndex
    

    注意,输出结果为 v2 v1

    对应地,插入到表尾

    rpush key v1 v2 v3
    

    从指定列表中移除并返回表头元素

    lpop key
    

    获取指定列表中指定下标的元素

    lindex key index
    

    获取指定列表的长度

    llen key
    

    从指定列表移除并返回表尾元素

    rpop key
    

    根据 count 值移除指定列表中跟 value 相等的数据

    lrem key count value
    
    • 当 count > 0,从左侧移除 count 个与 value 相等的元素
    • 当 count < 0,从右侧移除 count 个与 value 相等的元素

    将 value 插入到列表中位于 pivot 元素之前或之后的位置

    linsert key before/after pivot value
    
  • 关于 set 类型的数据的操作命令

    特点:单 key - 多无序 value

    将一个或多个元素添加到指定的集合,如果元素已经存在则忽略,返回成功加入的元素个数

    sadd key v1 v2 v3
    

    获取指定集合的所有元素

    smembers key
    

    判断指定元素在指定集合中是否存在,存在回 1 ,不存在回 0

    sismember key member
    

    获取指定集合的长度

    scard set01
    

    移除指定集合中一个或多个元素。不存在的话回忽略,返回成功移除的元素个数

    srem key member1 member2 member3
    

    随机获取集合中一个或多个元素,如果 count > 0 则随机获取的元素不重复,如果 count < 0 则获取的元素可能重复

    srandmember key [count]
    

    从指定集合中随机移除一个或者多个元素

    spop key [count]
    

    把元素从一个集合移到另一个集合

    smove source dest member
    

    获取一个集合里有,但是其他集合中都没有得元素组成的新集合

    sdiff key key [key...]
    

    获取所有集合的交集

    sinter set01 set02 [set03...]
    

    获取所有指定集合中所有元素的大集合

    sunion key key [key...]
    
  • 关于 hash 类型的数据的操作命令

    hash 类型数据:单 key : field-value

    Redis 中的 hash 是一个 string 类型的 key 和 vaue 的映射表,这里的 value 是一系列的键值对,所以 hash 特别适合存储对象

    hash 类型的数据的操作总的思想是通过 key 和 field 操作 value ,key 是数据标示,field 是域,value 是我们感兴趣的业务数据

    将一个或者多个 fileld - value 对设置到哈希表中

    hset key fild_1 value_1 [field_2 value_2 ...]
    

    或。。。其实就看个人习惯

    hmset key field_1 value_1 [field_2 value_2 ...]
    

    获取指定哈希表中指定 field 的值

    hget key field
    

    批量获取指定哈希表的 field 的值

    hmget key field_1 [field_2 ...]
    

    获取指定哈希表中所有的 field 和 value

    hgetall key
    

    从指定哈希表中删除一个或多个 field

    hdel key field_1 [field_2 ...]
    

    获取指定哈希表中所有的 field 个数

    hlen key
    

    判断一个哈希表中是否存在某一个 field ,存在回 1 ,不存在回 0

    hexists key field
    

    获取指定哈希表中所有的 field 列表

    hkeys key
    

    获取指定哈希表中所有的 value 列表

    hvals key
    

    对指定哈希表中指定的 field 值进行加法运算

    hincrby key field Int
    

    对着指定哈希表中指定 field 值进行浮点数加法运算

    hincrbyfloat key field float
    

    将一个 field - value 对设置到哈希表中,当 key - field 已经存在时,则放弃设置;否则,设置

    hsetnx key field_1 value_1
    
  • 关于 zset 类型数据的操作命令

这篇关于Redis 笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!