Redis入门
概述
Redis是什么?
(远程字典服务,支持网络,可基于内存和可持久化的日志型、Key-Value数据库,提供多种语言的API)
Redis能干嘛?
1、内存存储、持久化,内存中是断电即失的,所以持久化很重要(rdb,aof)
2、效率高,可用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器、计数器(浏览量)
6、......
特性
1、多样的数据类型 2、持久化 3、集群 4、事务 5、......
Redis基础知识
redis默认16个数据库
默认使用的是第0个
可以用select进行切换数据库
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