Redis入门
一、Redis概述
1、什么是Redis?
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
免费开源,是当下最热门的NoSql技术之一。也被人们称为结构化数据库。
2、Redis能干嘛?
(1)内存存储,持久化,内存是断电就没有,持久化很重要!(rdb,aof)
(2)效率高,可用于高速缓存。
(3)发布订阅系统。
(4)地图信息分析。
(5)计时器,计数器等。(比如浏览数量)
3、Redis的特性
(1)多样的数据类型
(2)持久化
(3)集群
(4)事务等
4、为什么redis是单线程的?(重要)
注意:redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程。
官方表示,redis是基于内存操作,CPU不是redis的性能瓶颈,redis的性能瓶颈是机器的内存和网络带宽,既然可以使用单线程来实现,那就不需要使用多线程。
5、单线程的redis为什么还这么快?
(1)完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
(2)数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;
(3)采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
(4)使用多路I/O复用模型,非阻塞IO;
(5)使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
二:redis下载
官网:https://redis.io/
中文网:http://www.redis.cn/
windows版本:https://github.com/MicrosoftArchive/redis/tags
windows版本下载:https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100
三:基本命令:
注意:redis中的命令不区分大小写,但是key和value的值区分大小写。
(1)测试连接:ping
连接成功,会自动响应一个PONG。
redis默认端口:6379
(2)切换数据库:select index
Redis中默认有16个数据库,下标0-15,默认使用第0个。
切换数据库:select index (index的值从0到15,即[0,15])
(3)存储值:set key value
当key是已经存在的,会覆盖原来的值。
(4)获取指定key的value值:get key
(5)查看当前数据库的大小:dbsize
(6)查看数据库所有的key:keys *
可以接其他匹配表达式。
(7)清空当前数据库:flushdb
(8)清空所有数据库:flushAll
(9)判断某个key是否存在:exists key
注意:是exists,不是exist
(10)将当前数据库中的key移动到指定数据库中:move key db
注意:如果当前数据库不存在key,或者指定数据库已经存在key,方法失效。
(11)设置指定key的过期秒数:expire key seconds
查看key的有效时间:ttl key
ttl的意思是:time to live,生效时间。
返回-1表示不过期,返回-2表示已过期,返回正数或0表示还有这么多时间过期。
注意:过期后该数据将会被自动删除。
(12)查看指定key的值存储类型:type key
(13)删除key:del key
附上:
redis命令中文官网:http://www.redis.cn/commands.html#generic