redis数据库基础

80 阅读5分钟

redis数据库

redis( Remote Dictionary Service -- 远程字典服务),它是⼀款开源、⾼性能的键值存储数据库。 它⽀持各种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet) 等,并提供了丰富的操作命令,可以对这些数据结构进⾏灵活的读写操作。

redis以内存为主要存储介质,这使得它具有⾮常快速的读写性能。同时,Redis也⽀持将数据持久化到 磁盘,以便在重启或崩溃恢复后保留数据。它采⽤了单线程的事件循环模型,通过异步IO和多路复⽤ 技术实现了⾼并发处理能⼒。

总结来说,redis是内存数据库、Key-Value数据库、数据结构数据库

redis常用数据类型

  • 字符串(string):普通字符串,常用
  • 哈希(hash):适合存储对象
  • 列表(list):按照插入顺序排序,可以有重复元素
  • 集合(set):无序集合,没有重复元素
  • 有序集合(sorted set/zset):集合中每个元素关联一个分数(score),根据分数升序排序,没有重复元素

数据库切换

在redis中,可以通过select命令来选择要操作的数据库,redis默认有16个数据库,编号从0到15。当连接到redis服务器的时候,默认会使用第0个数据库,但我们可以使用select命令来切换到其他数据库

select 1  #切换到第1个数据库

一旦切换到目标数据库,后续的数据操作命令(如set、get等)都会在选定的数据库上执行。

字符串string

字符串类型可以存储文本、数字或者序列化的对象。它通常用于缓存数据、计数器、配置设置等。

命令说明
SET key value设置指定key的值为Tvalue
GET key获取指定key的值
SETEX key seconds value设置指定key的值,过期时间设为seconds秒
SETNX key value只有在 key 不存在时设置 key 的值
DEL key [key…]删除一个或多个key
STRLEN key获取指定key值的长度
MSET key value [key value…]同时设置一对或多对key-value
APPEND key value将指定值追加到指定key原有值的末尾

key:表名(这里我运行的是demo...)

image.png

哈希hash

redis hash是一个string类型的field和value的映射表,hash特别适合用于存储多条数据(存储对象),常用命令:

命令说明
HSET key field value将哈希表key中的字段field的值设为value
HGET key field获取存储在哈希表中指定字段的值
HDEL key field删除存储在哈希表中的指定字段
HKEYS key获取哈希表中所有值
HGETALL key获取哈希表中指定key的所有字段和值
HKEYS key获取哈希表中所有字段
HLEN key获取哈希表中字段的数量
HEXISTS key field检查哈希中是否存在指定的字

key:表名 field:相当于字典中的key值 value:数据

列表list

redis列表是简单的字符串列表,按照插入顺序排序,常用命令:

命令说明
LPUSH mylist value1 value1将一个或多个值插入到列表头部
RPUSH mylist value2 value2将一个或多个值插入到列表头部
LPOP mylist从列表的头部移除并返回元素
RPOP mylist从列表的尾部移除并返回元素
LRANGE key start stop获取列表指定范围内的元素 获取row的数据(默认从0开始),开始和结尾都要返回
LLEN key获取列表长度
LINDEX mylist通过索引获取列表中的元素
LREM mylist 2 value移除列表中value2次
LTRIM mylist 0 2对列表进⾏裁剪,只保留指定范围内的元素,获取索引0-2的3条数据,其余数据会被删除

key、mylist:表名称 value:列表的数据

集合set

redis set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:

命令说明
SADD key member1[member2]向集合中添加一个或多个成员
SMEMBERS key返回集合中的所有成员
SISMEMBER myset member1检查成员是否存在于集合中
SCARD key获取集合中的成员数
SREM myset member1从集合中移除1个或多个成员
SPOP myset随机移除并返回集合中的⼀个成员
SUNION set1 set2求多个集合的并集
SINTER set1 set2求多个集合的交集
SDIFF set1 set2求多个集合的差集(只显示set1中的差集,需要set2的差集反过来就行)

myset、key:表名

有序集合sorted set

Redis sorted set 有序集合是 string 类型元素的集合,且不允许重复的成员。每个元素都会关联⼀个double类型的分数(score) 。redis正是通过分数来为集合中的成员进⾏从⼩到⼤排序。有序集合的成员是唯⼀的,但分数却可以重复。常用命令:

命令说明
ZADD mysortedset 95 "Tom"在mysortedset表中新增一条为95的Tom数据
ZRANGE key start stop[WITHSCORES]根据索引范围获取有序集合中的成员(通过行数排序)
ZINCRBY key increment member有序集合中对指定成员的分数加上增量increment
ZREM key member[member...]移除有序集合中的⼀个或多个成员

通用命令

redis中的通用命令,主要是针对key进行操作的相关命令:

image.png

查看当前数据库key的数量

DBSIZE

获取当前数据库所有的key

keys *

清除当前数据库

flushdb

清除所有数据库

flushall

指定key为username移动到1号数据库

move username 1
#例如:move demo 5   #将当前数据库中的demo表移动到数据库5