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...)
哈希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进行操作的相关命令:
查看当前数据库key的数量
DBSIZE
获取当前数据库所有的key
keys *
清除当前数据库
flushdb
清除所有数据库
flushall
指定key为username移动到1号数据库
move username 1
#例如:move demo 5 #将当前数据库中的demo表移动到数据库5中