一、redis简介
- 概念:redis,全称是remote dictionary server(远程字典服务器), 免费开源,使用c语言开发。redis是一个高性能的key-value键值对分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库(非关系型数据库)。
- 特点
- a. redis支持持久化(rdb和aof两种方式),可以将内存中的数据持久化到磁盘,当redis重启时可以恢复数据;
- b. 除了支持key-value键值对,还支持list列表、set无序列表、zset有序列表、hash散列等数据结构存储;
- c. 支持数据的备份,即主从模式master-slave模式以及哨兵模式Sentinel;
二、redis能干啥?
- a. 内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务;
- b. 支持事务transaction,但是不保证事务的原子性,即可以允许一组命令中的一部分成功,另一部分失败;
- c. 模拟类似于HttpSession这种需要设定过期时间的功能;
- d. subcribe/publish发布、订阅消息系统;
- e. 定时器、计数器;
- f. 主从复制、哨兵模式备份数据等;
三、常用数据类型介绍
在redis中常用的数据类型主要有五种:String、List、Set、Hash、ZSet。redis中的数据都是key - value键值对,这里的数据类型指的是value的值的类型。下面通过一个表格说明这五种数据类型的区别:
redis常用数据类型
数据类型 | 说明 |
String | Redis中最基本的数据类型,二进制安全的,它可以包含任意数据类型。如图片。Redis中String类型的数据上限的512M |
List | Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。 |
Hash | 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。 |
Set | Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。 |
ZSet | 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。 |
【a】String(字符串)
- String是redis最基本的类型,一个key对应一个value;
- String类型是二进制安全的,意思是redis的string可以包含任何数据。比如ipg图片或者序列化的对象;
- String类型是Redis最基本的数据结构,一个redis中字符串value最多可以是512M;
【b】List(列表)
- Redis List列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边);
- 它的底层是一个链表;
【c】Hash(哈希)
- Redis Hash是一个键值对集合;
- Redis Hash是一个String类型的field和value的映射表,Hash特别适合用于存储对象;
- 类似java里面的Map<String,Object>;
【d】Set(集合)
- Redis的Set是String类型的无序集合。它是通过HashTable实现的;
【e】ZSet(有序集合)
- Redis ZSet和Set一样也是String类型元素的集合,且不允许重复的成员;
- 不同的是每个元素都会关联一个double类型的分数;
- redis正是通过分数来为集合中的成员进行从小到大排序。ZSet的成员是唯一的,但分数(score)却可以重复;
四、常用命令总结
下面,我们总结几个常用的redis命令,方便以后在工作中使用。
首先当然需要先安装好redis服务。
我们先启动redis服务:
cd /usr/local/redis-5.0.7/bin/
redis-server ../etc/redis.conf
redis-cli
ping
【a】select:切换数据库命令,redis中默认是16个数据库,下表从零开始(0 - 15 号库),初始默认使用0号库。
【b】dbsize:查看当前数据库的key的数量
【c】keys * :查看当前所有键
【d】exists xxx:判断某个key是否存在,存在返回1,不存在返回0
【e】move key db : 将key移到某个数据库中
【f】 expire key 秒钟:为给定的key设置过期时间
ttl key查看还有多少秒过期,-1表示永不过期,-2表示已过期
【g】type key :查看你的key是什么类型
【h】rename:修改key的名称
【i】flushdb:清空当前库
【j】flushall:通杀全部库
以上就是工作中常用的一些redis操作命令,更多的命令使用详解可以去redis中文官网http://www.redis.cn/commands.html里面参考,小伙伴们记得亲自手敲一遍哦,自己敲一遍胜过看十遍。