Redis-起步

48 阅读5分钟

Redis是一个非关系型数据库

Redis特点

  1. 键值型(key,value结构),value支持多种不同的数据结构
  2. 单线程,每个命令都具有原子性(Redis6.0的多线程是指网络处理多线程,其核心的线程还是单线程)
  3. 低延迟,速度快(基于内存存储、IO多路复用)
  4. 支持数据持久化(RDB、AOF两种方式)
  5. 支持多语言客户端

关系型数据库与非关系型数据库的区别

  1. 关系型数据库数据存储在硬盘中,非关系型数据库数据存储在内存中
  2. 关系型数据库库表与表之间存在关联关系,非关系型数据库没有这种关联关系,这是由它的数据结构决定的,如:键值型、文档型
  3. 速度,关系型数据库数据存在硬盘上,所以速度远没有非关系数据库快
  4. 规范,关系型数据库都有一个统一的规范(SQL),非关系数据库则没有这种同一个的规范,它们都有各自的语法,这无疑是加大了学习的成本

Redis的通用语法

语 法说 明
keys *查询出所有的键,可以在 * 的前后加一些限制只显示匹配的,如:keys student* 就是显示所有student的键
type key获取指定键的value是什么类型的,如:type name 就是查看name这个键它的值是什么数据类型
del key删除指定的键,如:del name,删除name这个键以及它的值
exists key查看一个键是否存在,可以一次接受多个,如:exists name 查看name这个是否存在于库中;返回结果 0 没有,1 以及存在
expire key seconds给一个执行的键设置有效期,单位是秒,到期后对应的键会自动删除,如:expire name 30 表示给name这个键设置一个30秒的有效期
ttl key查看一个键的剩余有效期,如:ttl name 表示产看name这个键的有效期

数据结构

String类型

语 法说 明
set key value添加或修改一个String类型的键值对,如:set name '张三'
get key根据key获取String类型的value,如:get name
mset key1 value1 key2 value2…批量添加多个String类型的键值对,如:mset k1 v1 k2 v2
mget key1 key2根据多个key获取多个String类型的value,如 mget k1 k2
incr key根据key,让其value自增1(前提value存的是数字),如:incr num
incrby key number根据key,让其value自增自定步长,如:incrby num 2 让num的值增加2
setnx key valye添加一对键值对,前提是这个key不存在,否则不执行,如:setnx k1 v1
setex key value seconds添加一对键值对,并指定有效期,如:setex k1 v1 30

注:如果存入的是数字,它实际存储的类型就是数字

Hash结构类型

语 法说 明
hset key field value添加或修改hash类型的可以的field的值
hget key field获取一个hash类型key的field的值
hmset key field1 value1 field2 value2…批量添加多个hash类型的field
hmget key获取多个hash类型的field的值
hgetall key获取一个hash类型的所有field和value
hkeys key获取一个hash类型的所有field和value
hkeys key获取一个hash类型的所有field
hvals获取一个hash类型的所有value
hincrby key field number让一个hash类型的field的value自增并指定步长
hsernx key field添加一个hash类型的field值,前提是这个field不存在,否则不执行

Hash数据结构类型

Redis中的List类型与Java的LinkedList类似,可以看作一个双向链表结构;即可以支持正向检索也可以支持反向检索,特征也与LinkedList类似

语 法说 明
lpush key element…向列表的左侧插入一个或多个元素
lpop key移出并返回列表左侧的第一个元素,没有分会nil
rpush key element…向列表的右侧插入一个或多个元素
rpop移出并返回右侧的第一个元素
lrange key start end返回一段角标范围内的所有元素
blpop和brpop与lpop和rpop类似,只不过在没有元素时会等待指定时间,而不是直接返回nil

Set类型

特点:无序、不可重复、查找快、支持交集|并集|差集等功能

语 法说明
sadd key member…向set中添加一个或多个元素
srem key menber…移除set中的指定元素
scard key返回set中元素个数
sismember key member判断一个元素是否存在于set中
smembers key获取set中的所有元素
sinter key1 key2…求key1与key2的交集
sdiff key1 key2…求key1与key2的差集
sunion key1 key2…求key1与key2的并集

SortedSet类型

特点:是一个可排序的set集合,SortedSet中的每一个元素带有一个score属性,可以基于score属性对元素排序,底层的实现是一个调表(SkipList)加 hash 表;可排序、元素不可重复、查询速度快

语 法说 明
zadd key score member添加一个或多个元素到sorted set,如果已经穿在则更新其score值
zrem key member删除sorted set中的一个指定元素
zscored key member获取sorted set中的指定元素的 score 值
zrank key member获取sorted set中指定元素的排名
zcard key获取sorted set中的元素个数
zcount key min max统计score值在给定范围没得所有元素个数
zincrby key number member让sorted set中指定元素的sorted自增指定步长(number)
zrange key min max按照score排序后,获取指定排名范围内的元素
zrangebyscore key min max按照score排序后,获取指定score范围内元素
zdiff、zinter、zuninon求差集、交集、并集