Redis非关系型数据库

Redis是什么

Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据 库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为 数据结构服务器。


Windows安装redis

1.下载后解压

2.命令行运行(可以指定配置文件),默认端口:6379

redis-server redis.windows.conf

3.通过客户端去访问 redis-cli


基本数据库常识

默认 16 个数据库,下标从零开始,初始默认使用零号库,在redis.conf里面有默认的配置

  • Select命令切换数据库
  • dbsize查看库中的数据量
  • Flushdb:清空当前库
  • Flushall:清空全部的库

常用命令

Redis键(key)

  • keys * 查看所有的key
  • exists key 的名字,判断某个key是否存在
  • expire key 秒钟:为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除
  • ttl key 查看还有多少秒过期,-1 表示永不过期,-2 表示已过期
  • type key 查看你的key是什么类型

字符串String操作命令

  • set key value 设置值
  • get key 获得key的值
  • del key 删除key
  • append key "hello" 追加内容 对不存在的 key 进行 APPEND ,等同于 SET
  • STRLEN key 获取字符串的长度
  • incr key + 1只能对数值
  • incrby key num +num
  • decr key -1
  • decrby key num -num
  • getrange 获取指定区间范围内的值,类似between...and的关系,从零到负一表示全部
  • setrange 设置指定区间范围内的值,格式是setrange key值 具体值
  • setex(set with expire)键秒值
  • setnx(set if not exist)
  • mset Mset 命令用于同时设置一个或多个 key-value 对。
  • mget Mget 命令返回所有(一个或多个)给定 key 的值。如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
  • msetnx 当所有 key 都成功设置,返回 1 。
  • getset(先get再set)

Redis五种基本数据类型

String字符串、List列表、Set集合、Hash哈希、sorkedSet有序集合


列表List

  • Lpush:将一个或多个值插入到列表头部。
  • rpush:将一个或多个值插入到列表尾部。
  • lrange:返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。
  • lpop 命令用于移除并返回列表的第一个元素。当列表 key 不存在时,返回 nil 。
  • rpop 移除列表的最后一个元素,返回值为移除的元素。
  • Lindex,按照索引下标获得元素(-1(特殊)代表最后一个, 0 代表是第一个)
  • llen 用于返回列表的长度。
  • lrem key 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。删除掉count个value值
  • Ltrim key 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
  • rpoplpush 移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
  • lset key index value 将列表 key 下标为 index 的元素的值设置为 value 。不能超出下标界限
  • linsert key before/after pivot value 用于在列表的元素前或者后插入元素。将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。(第一个)

集合Set

  • sadd 将一个或多个成员元素加入到集合中,不能重复,返回添加成功的数量
  • smembers 返回集合中的所有的成员。
  • sismember 命令判断成员元素是否是集合的成员。
  • scard,获取集合里面的元素个数
  • srem key value 用于移除集合中的一个或多个成员元素(返回删除元素的个数)
  • srandmember key 命令用于返回集合中的一个随机元素
  • spop key 用于移除集合中的指定 key 的一个或多个随机元素(返回删除的元素)
  • smove SOURCE DESTINATION MEMBER 将指定成员 member 元素从 source 集合移动到 destination 集合。
  • 数字集合类- 差集: sdiff sdiff A B 返回A集合交于B集合的差集- 交集: sinter sinter A B 返回A和B共同的元素- 并集: sunion sunion返回A和B中所有的元素

哈希Hash

kv模式不变,但V是一个键值对

  • hset、hget 命令用于为哈希表中的字段赋值 。
  • hmset、hmget 同时将多个field-value对设置到哈希表中。会覆盖哈希表中已存在的字段。
  • hgetall 用于返回哈希表中,所有的字段和值。
  • hdel 用于删除哈希表 key 中的一个或多个指定字段
  • hlen 获取哈希表中字段的数量。
  • hexists 查看哈希表的指定字段是否存在。
  • hkeys 获取哈希表中的所有域(field)。
  • hvals 返回哈希表所有域(field)的值。
  • hincrby 为哈希表中的字段值加上指定增量值。
  • hsetnx 为哈希表中不存在的的字段赋值

有序集合Zset

Zset是排序的

  • 在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是 k1 score1 v1 score2 v2
  • zadd 将一个或多个成员元素及其分数值加入到有序集当中。
  • zrange 返回有序集中,指定区间内的成员
  • zrangebyscore 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大)次序排列。
  • zcard 命令用于计算集合中元素的数量
  • zcount 计算有序集合中指定分数区间的成员数量
  • zrank 返回有序集中指定成员的排名。其中有序集成员按分数值递增(从小到大)顺序排列。
  • zrevrank 返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。

和set相比,sorted set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列,比如一个存储全班同学成绩的sorted set,其集合value可以是同学的学号,而score就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。可以用sorted set来做带权重的队列,比如普通消息的score为 1 ,重要消息的score为 2 ,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。

相关推荐
小皮侠18 分钟前
【Redis入门到精通一】什么是Redis?
数据库·redis·缓存
kaiwawah23 分钟前
Redis进阶(七):分布式锁
数据库·redis·分布式
小刘要进步38 分钟前
MySQL指令大全
数据库·mysql
sanzk1 小时前
sql格式化工具
java·数据库·sql
Marchwho1 小时前
面试—MySQL
java·数据库·mysql
2401_858120261 小时前
Oracle Data Guard:Oracle数据库的高可用性和灾难恢复解决方案
数据库·oracle
MinIO官方账号1 小时前
对象存储上的数据库--新常态
大数据·数据库·hadoop·分布式·架构·kafka
雅冰石1 小时前
Mysql查看锁阻塞信息
数据库·mysql
一休哥助手2 小时前
深入解析MySQL索引的使用及优化
数据库·mysql