Redis 知识点汇总

什么是Nosql

NoSQL = Not Only SQL(不仅仅是 SQL) ,也解释为 non-relational(非关系型数据库)。在NoSQL 数据库中数据之间是无联系的,无关系的。数据的结构是松散的,可变的。

Nosql 的优势

  1. 大数据量,高性能
  2. 灵活的数据模型:NoSQL 无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。
  3. 高可用:NoSQL 能很好的解决关系型数据库扩展性差的问题。弥补了关系数据(比如 MySQL)在某些方面的不足,在某些方面能极大的节省开发成本和维护成本。
  4. 低成本

Nosql 的劣势

  1. 不支持标准的SQL,没有共认的NOSQL 标准。
  2. 没有关系型数据库的约束,大多数也没有索引
  3. 没有事务,不能依靠事务实现ACID 注释:A:原子性[Atomicity] C:一致性[Consistency] I:隔离性[Isolation] D:持久性[Durability]
  4. 没有丰富的数据类型(数值,日期,字符,二进制,大文本等)

windows 安装Redis

  1. 官网 windows 版本
  2. 下载的 Redis-x64-3.2.100.zip 解压后,放到某个目录(例如 d:\tools\),即可使用。
  3. Windows7 系统双击 redis-server.exe 启动 Redis Windows 10 系统 在软件文件根目录下cmd 然后执行 redis-server.exe redis.windows.conf 例如:D:\tools\Redis-x64-3.2.100>redis-server.exe redis.windows.conf
  4. ctrl +c 退出 Redis 服务程序。

Linux 安装Redis

  1. 上传 redis-3.2.9.tar 到 linux 系统。
  2. 解压 :tar -zxcf redis-3.2.9.tar -C /user/local
  3. 编译 Redis 文件, Redis 是使用 c 语言编写的。 会使用 gcc 编译器 :在解压后的 Redis 目录下执行 (cd /usr/local/redis-3.2.9) make 命令                                 注意事项:
    1)make 命令执行过程中可能报错,根据控制台输出的错误信息进行解决
    2)错误一:gcc 命令找不到,是由于没有安装 gcc 导致
    解决方式:安装 gcc 编译器后在执行 make 命令
    什么是 gcc ?
    gcc 是 GNU compiler collection 的缩写,它是 Linux 下一个编译器集合( 相当于 javac ), 是 c 或 c++程序的编译器。
    怎么安装gcc ?
    使用yum进行安装gcc 。执行命令:yum -y install gcc
    3)错误二: error: jemalloc/jemalloc.h: No such file or directory
    解决方式执行 make MALLOC=libc
    注意:安装完 gcc 之后,再执行 make,先执行 make distclean 清理一
    下上次 make 后产生的文件。
  4. 执行成功标志:在这里插入图片描述
  5. 启动Redis :切换到 src 目录下执行 redis-server 程序
    启动方式:
    ① 前台启动 ./redis-server
    ② 后台启动 ./redis-server &
  6. 关闭 Redis:切换到 redis-3.2.9/src/ 目录,执行 ./redis-cli shutdown

redis 命令行客户端

  1. 连接客户端 1)直接连接 redis (默认 ip127.0.0.1,端口 6379):./redis-cli 2)指定连接的redis :./redis -cli -h 127.0.0.1 -p 6379 解释: -h redis 主机 IP (可以指定任意的 redis 服务器)
    -p 端口号(不同的端口表示不同的 redis 应用)
使用客户端连接 Linux 的 Redis

连接Linux的Reids之前需要修改Redis服务器的配置信息。 Redis服务器有安全保护措施,默认只有本机(安装Redis的那台机器)能够访问。配置信息存放在Redis安装目录下的redis.conf文件。修改此文件的两个设置。
远程连接redis需要修改redis主目录下的redis.conf配置文件:
①、bind ip 绑定ip此行注释
②、protected-mode yes 保护模式改为 no
最后关闭之前开启的重新启动一次:
./redis-server …/redis.conf &
关闭防火墙,Linux 系统,命令行执行:systemctl stop firewalld

Redis 基本操作命令

  1. 查看redis 运行状态 :ping
  2. 查看当前数据库中key中的数目:dbsize
  3. redis 默认使用 16 个库 切换库命令:select index 备注:index 是库的索引值(0~15)
    • 删除当前库中的数据: flushdb
    • 退出当前连接:exit 或者 quit
  4. keys pattern 查找所有符合模式 pattern 的key pattern 可以使用通配符。 “*” :表示 0-多个字符 ,例如:keys * 查询所有的 key。 “?”:表示单个字符,例如:wo?d , 匹配 word , wood
  5. exit key [key …]:判断 key 是否存在 返回值:整数,存在 key 返回 1,其他返回 0. 使用多个 key,返回存在的 key 的数量。
  6. expire key seconds :设置key 存活的时间,到时间自动删除key 单位是秒 返回值:设置成功返回数字 1, 其他情况是 0 。
  7. ttl key :返回key 剩余存活时间
    返回值:
    -1 :没有设置 key 的生存时间, key 永不过期。
    -2 :key 不存在
    数字:key 的剩余时间,秒为单位
  8. type key :查看 key 所存储值的数据类型
    返回值:字符串表示的数据类型
  • none (key 不存在)
  • string (字符串)
  • list (列表)
  • set (集合)
  • zset (有序集)
  • hash (哈希表)
  1. del key[key…]:删除存在的key 不存在的忽略
  2. redis 的五种数据类型 :
  • string 字符串类型 :Redis 中最基本的数据类型,它能存储任何形式的字符串,包括二进制
    数据,序列化后的数据,JSON 化的对象甚至是一张图片
  • hash 哈希类型:是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
  • list 列表类型 :简单的字符串列表,按照插入顺序排序。
  • set 集合类型:string 类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据.
  • zset 有序集合类型 :是 string 类型元素的集合,且不允许重复的成员,每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的
    成员进行从小到大的排序

字符串类型(string)

  1. set key :获取key 对应的value 值
  2. get key :获取key 对应的value 值
  3. incr key :对key 对应的值加1(仅对数值型value值进行操作)
  4. decr key: 对key 对应的值 减1 (仅对数值型value值进行操作)
  5. append key value : 如果 key 存在, 则将 value 追加到 key 原来旧值的末尾
    如果 key 不存在, 则将 key 设置值为 value
    返回值:追加字符串之后的总长度
  6. strlen key :key 的value值长度 ①:如果key存在,返回字符串值的长度
    ②:key不存在,返回0
  7. getrange key start end :获取 key 中字符串值从 start 开始 到 end 结束 的子字符串,包括 start 和 end, 负数表示从字符串的末尾开始, -1 表示最后一个字符
    返回值:截取的子字符串
  8. setrange key offset value :用value 覆盖(替换)key存储的值从offset 开始 不存在的key做空白字符串。 返回值:修改后的字符串长度
  9. mset key value [key value…]:同时设置一个或多个 key-value 对
  10. mget key [key …]:获取所有(一个或多个)给定 key 的值

哈希类型 hash

  1. hset hash 表的 key field value:将哈希表 key 中的域 field 的值设为 value ,如果 key 不存在,则新建 hash 表,执行赋值,如果有 field ,则覆盖值。返回值:
    ①如果 field 是 hash 表中新 field,且设置值成功,返回 1
    ②如果 field 已经存在,旧值覆盖新值,返回 0
  2. hget key field :获取哈希表key中给定域field的值
  3. hmset key field value [field value…]:同时将多个 field-value (域-值)设置到哈希表 key 中,此命令会覆盖已经存在的 field,hash 表 key 不存在,创建空的 hash 表,执行 hmset
    在这里插入图片描述
  4. hmget key field [field…]:获取哈希表 key 中一个或多个给定域的值
    返回值:返回和 field 顺序对应的值,如果 field 不存在,返回 nil
  5. hgetall key :获取哈希表 key 中所有的域和值
    返回值:以列表形式返回 hash 中域和域的值 ,key 不存在,返回空 hash
  6. hdel key field [field…]:删除哈希表 key 中的一个或多个指定域 field,不存在 field 直接忽略
    返回值:成功删除的 field 的数量
  7. hkeys key:查看hash表中key 的所有filed域
  8. hvals key:返回hash表中所有域值 返回值:包含哈希表所有域值的列表,key 不存在返回空列表
  9. hexsits key field :查看哈希表 key 中,给定域 field 是否存在
    返回值:如果 field 存在,返回 1, 其他返回 0

列表 list

  1. lpush key value [value…]:将一个或多个值 value 插入到列表 key 的表头(最左边),从左边开始加入值,从左到右的顺序依次插入到表头
    返回值:数字,新列表的长度
  2. rpush key value [value…]:将一个或多个值 value 插入到列表 key 的表尾(最右边),各个 value 值按从左到右的顺序依次插入到表尾
    返回值:数字,新列表的长度
  3. lrange key start stop :获取列表 key 中指定区间内的元素,0 表示列表的第一个元素,以 1 表示列表的第二个元素;start , stop 是列表的下标值,也可以负数的下标, -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 start ,stop 超出列表的范围不会出现错误。
    返回值:指定区间的列表
  4. lindex key index :获取列表 key 中下标为指定 index 的元素,列表元素不删除,只是查询。0 表示列表的第一个元素,以 1 表示列表的第二个元素;列表的下标值,也可以负数的下标, -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
    返回值:指定下标的元素;index 不在列表范围,返回 nil
  5. llen key: 获取列表key的长度 返回值:数值,列表的长度; key 不存在返回 0
  6. lrem key count value :根据参数count 的值 移除列表中参数value 相同的值,count>0 从列表左侧向右开始移除,count<0 从列表尾部开始移除,count=0 移除表中所有与value相等的值 返回值:数值,移除的元素个数
  7. lset key index value :将列表key 下标为index 的元素的值设置为value值 返回值:设置成功返回 ok ; key 不存在或者 index 超出范围返回错误信息
  8. linsert key BEFORE |ALEFTER pivot value : 将值 value 插入到列表 key 当中位于值 pivot 之前或之后的位置。key 不存在,pivot不在列表中,不执行任何操作。
    返回值:命令执行成功,返回新列表的长度。没有找到 pivot 返回 -1, key 不存在返回 0

集合类型 set

  1. sadd key member[member…]:将一个或者多个member添加到集合key中,已经存在于集合中的member 会直接忽略,不会重复添加。
    返回值:加入到集合的新元素的个数。不包括被忽略的元素。
  2. smembers key :获取集合key中所有成员元素,不存在的key 视为空集合
  3. sismember key member :判断member 元素是否是key 的成员
    返回值:member 是集合成员返回 1,其他返回 0
  4. scard key :获取key 集合元素的个数
  5. srem key member[member…]:删除集合 key 中的一个或多个 member 元素,不存在的元素被忽略。
    返回值:数字,成功删除的元素个数,不包括被忽略的元素
  6. srandmember key[count]: 只提供 key,随机返回集合中一个元素,元素不删除,依然在集合中;提供了 count
    时,count 正数, 返回包含 count 个数元素的集合, 集合元素各不相同。count 是负数,返回一个 count 绝对值的长度的集合, 集合中元素可能会重复多次。
    返回值:一个元素;多个元素的集合
  7. spop key [count]:随机删除 key中的元素 count 代表删除元素的个数 返回值:被删除的元素,key 不存在或空集合返回 nil

有序集合类型 zset (sorted set)

  1. zadd key score member[ score member…]:将一个或者多个member 及score 的值添加到有序集合key 集合中, 如果member 存在 则更新值 ,score 可以是整数或浮点数 返回值:数字,新添加的元素个数
  2. zrange key start stop[WITHSCORES]:查询有序集合,指定区间内的元素。集合成员按照score从小到大排序。start,stop 都是从 0 开始。0 是第一个元素,1 是第二个元素,依次类推。以 -1 表示最后一个成员,-2 表示倒数第二个成员。WITHSCORES 选项让 score 和 value 一同返回。
    在这里插入图片描述
  3. zrevrange key start stop[WITHSCORES]:返回有序集合中,指定区间的成员,成员按照score值递减排列(从大到小),start,stop 都是从 0 开始。0 是第一个元素,1 是第二个元素,依次类推。以 -1 表示最后一个成员,-2 表示倒数第二个成员。WITHSCORES 选项让 score 和 value 一同返回。
  4. zrem key member[member…]:删除有序集合 key 中的一个或多个成员,不存在的成员被忽略
    返回值:被成功删除的成员数量,不包括被忽略的成员。
  5. zcard key :获取有序集合key成员的个数。 key 不存在,返回 0
  6. zrangebyscore key min max[WITHSCORES][LINIT offset count]:获取有序集 key 中,所有 score 值介于 min 和 max 之间(包括 min 和 max)的成
    员,有序成员是按递增(从小到大)排序。min ,max 是包括在内 , 使用符号 ( 表示不包括。 min , max 可以使用 -inf ,+inf 表示最小和最大 limit 用来限制返回结果的数量和区间。withscores 显示 score 和 value
    返回值:指定区间的集合数据
    在这里插入图片描述
    在这里插入图片描述
    使用limit
    在这里插入图片描述
    显示从第一个元素开始取一个元素
    在这里插入图片描述
  7. zrevrangebyscore key max min [WITHSCORES ] [LIMIT offset count]:返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。min ,max 是包括在内 , 使用符号 ( 表示不包括。 min , max 可以使用 -inf ,+inf 表示最小和最大 limit 用来限制返回结果的数量和区间。withscores 显示 score 和 value
    返回值:指定区间的集合数据
  8. zcount key mix max :返回有序集合中,score 在范围min ~max 内(默认包括 score 值等于 min 或 max )的成员的个数。
发布了16 篇原创文章 · 获赞 0 · 访问量 278

猜你喜欢

转载自blog.csdn.net/weixin_44094017/article/details/104633924
今日推荐