Redis入门

5 阅读3分钟

Redis入门

概述

Redis是什么?
(远程字典服务,支持网络,可基于内存和可持久化的日志型、Key-Value数据库,提供多种语言的API)
Redis能干嘛?

1、内存存储、持久化,内存中是断电即失的,所以持久化很重要(rdb,aof)

2、效率高,可用于高速缓存

3、发布订阅系统

4、地图信息分析

5、计时器、计数器(浏览量)

6、......

特性

1、多样的数据类型 2、持久化 3、集群 4、事务 5、......

Redis基础知识

redis默认16个数据库

image-20250407211145006

默认使用的是第0个

可以用select进行切换数据库

image-20250407211418664

image-20250407211544546

127.0.0.1:6379[3]> keys * # 查看数据库所以得key
1) "name"

清除当前数据库

127.0.0.1:6379[3]> flushdb
OK
127.0.0.1:6379[3]> keys *
(empty array)

清除所有数据库

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> keys *
(empty array)
Redis是单线程的!

Redis是很快的,是基于内存操作的,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程实现,就使用单线程了

Redis为什么单线程还这么快

Redis的QPS为100000+,完全不必key-value的Memecache差!

1、误区1:高性能的服务器一定是多线程的?

2、误区2:多线程(CPU上下文会切换)一定比单线程效率高!

核心原因:Redis是将所有的数据全部放在内存中的,所以使用单线程去操作效率就是最高的多线程(CPU上下文会切换:耗时操作),对于内存系统来说,没有上下文切换效率就是最高的,多次读写都是在一个cpu上的,在内存情况下,这就是最佳的方案

五大数据类型

Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库缓存消息中间件MQ。它支持多种类型的数据结构,如字符串(string)、散列(hashs)、列表(lists)、集合(sets)、有序集合(sorted sets)与范围查询、bitmaps、hyperloglogs和地理空间(geospatial)索引半径查询。Redis内置了复制(replication)、LUA脚本(Lua scripting)、LRU驱动事件、事务和不同级别的磁盘持久化,并通过Redis哨兵和自动分区提供高可用性。

Redis-Key

127.0.0.1:6379> keys * #查看所以得key
(empty array)
127.0.0.1:6379> set name czy
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> EXISTS name # 判断当前key是否存在
(integer) 1
127.0.0.1:6379> EXISTS name1
(integer) 0
127.0.0.1:6379> move name 1 # 移除当前key
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> set name czy
OK
127.0.0.1:6379> keys *
1) "age"
2) "name"
127.0.0.1:6379> get name
"czy"
127.0.0.1:6379> expire name 10 # 设置过期时间,单位是秒
(integer) 1
127.0.0.1:6379> ttl name # 查看当前key的剩余时间
(integer) 5
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> type name # 查看当前key的类型
string
127.0.0.1:6379> type age
string