NoSQL-Redis从入门到精通

本文全面解析Redis的五大数据类型:String、Hash、List、Set、Zset,涵盖基本操作、高级用法及应用场景,适合初学者快速上手及进阶学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:部分内容借鉴与网络,实际操作内容都经过本人实测


NoSQL概述:

NoSQL四大分类:

四者对比: 

在分布式数据库中CAP原理CAP+BASE:

 

传统的ACID:

A(Atomicity)    原子性

C(Consistency)  一致性

I(Isonlation)   独立性

D(Durability)   持久性

 

 

CAP+BASE

C(Consisitency)   强一致性

A(Availability) 可用性

P(Partition tolerance) 分区容错性

 


 

 


Redis简介:

Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了C++、Java、Python,Ruby,Erlang,PHP客户端。

 

 



安装:

yum -y install redis

或者

docker pull redis 

常用命令

五大数据类型:

String 字符串

Hash 哈希 类似java中的map

List 列表

Set 集合

Zset(sorded set) 有序集合

 

库级别操作

DBSize

查看当前数据库key的数量

FlushDB (ASYNC)

清除当前库 带ASYNC 将会单开线程在后台执行(4.0新特性)

FlushALL (ASYNC)

清所有库  带ASYNC将会单开线程在后台执行(4.0新特性)

Keys *

匹配key  如keys key1

Exists key

判断某个key是否存在  存在返回1 不存在返回0

Move key db

当前库就没有了,被移除了

Expire key 秒钟

 为给定的key设置过期时间

Ttl key

 查看还有多少秒过期,-1表示永不过期,-2表示已过期

Type key

 查看你的key是什么类型

SWAPDB 0 1

交换数据库,原来的数据库 0 变成数据库 1 , 而原来的数据库 1 则变成数据库 0(4.0新特性) 

MEMORY useage key

查看key所占用的内存情况

MEMORY MALLOC-STATS

子命令可以展示分配器内部状态

MEMORY PURGE

子命令可以要求分配器释放更多内存

 

 

-------

 

 

String字符串

Get、Set

设置  取得值

Select db

切换数据库

Del key

UNLINK key

删除key

这个命令是 DEL 命令的异步版本, 它可以将删除指定键的操作放在后台线程里面执行, 从而尽可能地避免服务器阻塞(4.0新特性)

Append key str

追加内容

Strlen key

Key的内容长度

Incr key

对值进行自增  每次自增1  一定是数据才能加减

IncrBy key 大小

每次递增多少

Decr

对值进行自减  每次自减1  一定是数据才能加减

DecrBy

每次递减多少

Getrange key start end

获取字符串从x下标 到y下标

Setrange key start content

从start开始设置值  直接覆盖

Setex key 秒数 value1

给key赋值新值并设置秒数  会覆盖以前的内容

Setnx key value1

如果key存在,设置无效   如果不存在 将会新增key

Mset k v k v k v

同时设置一个或多个 key-value 对

Mget k k k k k k

获取所有(一个或多个)给定 key 的值

Getset

给key设置一个新的值 然后返回一个旧值(这个不错)

Msetsnx k v k v

同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在

 

------------------------------------------------------------------------------------------------------------

 

List列表

LPUSH key v v v v

各个 value 值按从左到右的顺序依次插入到表头

RPUSH key v v v v

那么各个 value 值按从左到右的顺序依次插入到表尾

LRANGE key 0 -1

取得指定范围内的值 0 -1取全部,0  1 表示取索引0和1的值

LPOP key

弹出当前栈顶第一个值  即移除

RPOP key

弹出当前栈最后一个值  即移除

LINDEX key index

取索引处的值

LLEN key

取list长度

LREM key 数量 value

删除一个list内的几个value

LTRIM key s e

截取元素  并重新赋值

RPOPLPUSH  key1 key2

把key1栈尾的值 压到key2栈顶

Lset key index value1 value2

给指定索引处赋值 

LINSERT key before value value2

插入值  在key的value之前

LINSERT key after value value2

插入值  在key的value之后

     它是一个字符串链表,left、right都可以插入添加;

     如果键不存在,创建新的链表;

    如果键已存在,新增内容;

    如果值全移除,对应的键也就消失了。

    链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。

 

------------------------------------------------------------------------------------------------------------

 

Set集合

Sadd key v v v

新增set并赋值

Smembers key

查询key的值

Sismember key value

查询value是否在key中

Scard

获取集合里面的元素个数

Srem key value

把value从key中删除

Srandmember key 数量

从key里面随机取出几个数

Spop key

随机弹出栈  一次一个

Smove key1 key2 value

把key1中的一个值移动到key2的栈顶

Sdiff key1 key2 key3 …

差集,在第一个set里面而不在后面任何一个set里面的项,相当于拿第一个做参考

Sinter

交集

Sunion

并集

 

Hash:哈希 KV模式不变,但V是一个键值对

Hset key k v

 设置一个带mapkey

Hget key k

取出key中的k的值

Hmset key k v k v k v

批量设置

Hmget key k k k k k

批量取多个k的值

HgetAll key

取一个key的所有值

Hdel key k

删除key中的k

Hlen key

 取长度

Hexists key k

key k是否存在

Hkeys key

key中的所有k

Hvals key

key所有的kvalue

HincrBy key k

key中的k自增1

HincrByfloat key k val

可以key中的kv增加val 对于float类型

Hsetnx key k v

key中的key设置值 如果存在 设置无效   不存在 新增至并设置值

Zset 有序集合

在set基础上,加一个score值。 之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2。下面所说的分数就是score

Zadd key s v

给v再加上一个s值

Zrange key 0 -1

查询范围内key对应的v

Zrange key 0 -1 withscores

联合score一起查

ZRANGEBYSCORE zset1 s1 s2

查询在set1中分数在s1到s2之间的v(如果在分数前加上“(”表示不包含)

ZRANGEBYSCORE zset1 s1 s2 limit 2 1

limit 2 1  从下标2开始截取1个

ZREM key v

从key中删除v

Zcard key

统计key的v的个数

ZCOUNT key s1 s2

查询key中分数在s1到s2之间的

Zrank key v

取v的下标

Zscore key v

取v的分数

Zrevrank key v

倒序取v的下标

Zrevrange key 0 -1

倒序取全部的v

ZREVRANGEBYSCORE zset1 90 60

查询key中分数在90到60之间的,因为这里是倒序的


 

Redis的配置文件详解 请看下篇文章...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值