地址:
Redis
Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures …
1:NoSQL简介
1.1:数据库应用的演变历程
单机数据库时代、Memcached时代、读写分离时代、分表分库时代(集群)、nosql时代。
1.2:NoSQL数据库
NoSQL = Not Only SQL(不仅仅是SQL) ,泛指non-relational(非关系型数据库)。今天随着互联网web2.0网站的兴起,比如谷歌或Facebook每天为他们的用户收集万亿比特的数据,这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展,就是一个数据量超大。传统的SQL语句库不再适应这些应用了。NoSQL数据库是为了解决大规模数据集合多重数据种类带来的挑战,特别是超大规模数据的存储。
NoSQL数据库的一个显著特点就是去掉了关系数据库的关系型特性,数据之间一旦没有关系,使得扩展性、读写性能都大大提高。
1.3:当前NoSQL的使用
NoSQL和传统的关系型数据库不是排斥和取代的关系,在一个分布式应用中往往是结合使用的。复杂的互联网应用通常都是多数据源、多数据类型,应该根据数据的使用情况和特点,存放在合适的数据库中。
1.4:NoSQL数据模型
传统关系型数据库:表。
t_student、t_address、t_course
NoSql数据库:聚合结构
{ "student":{ "id":1001, "name":"zhangsan", "addresses":{"province":"beijing","city":"daxingqu","street":"liangshuihe"}, "courses":[ { "id":01, "name":"java" }, { "id":02, "name":"mybatis" }, { "id":03, "name":"spring" } ] } }
2:Redis
1.2:Redis简介
Remote Dictionary Server(远程字典服务器),是一个用C语言编写的、开源的、基于内存运行并支持持久化的、高性能的NoSQL数据库.也是当前热门的NoSQL数据库之一。
1.2:Redis的特点
1、支持数据持久化:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
2、支持多种数据结构:Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3、支持数据备份:Redis支持数据的备份,即master-slave模式的数据备份。
1.3:Redis客户端
1:Redis客户端是一个程序,通过网络连接到Redis服务器,从而实现跟 Redis服务器的交互。
2:Redis客户端发送命令,同时显示Redis服务器的处理结果。
3:redis-cli(Redis Command Line Interface)是Redis自带的基于命令行的Redis客户端,用于与服务端交互,我们可以使用该客户端来执行redis的各种命令。
1.启动Redis客户端:
1.直接连接redis (默认ip127.0.0.1,端口6379):redis-cli
在任意目录执行 redis-cli
此命令是连接本机127.0.0.1 ,端口6379的redis
1.指定IP和端口连接redis:redis-cli –h 127.0.0.1 -p 6379
2.redis-cli -h 相连接主机的IP地址 –p redis的端口号
-h redis主机IP(可以指定任意的redis服务器)
-p端口号(不同的端口表示不同的redis应用)
在任意目录下执行 redis-cli -h 127.0.0.1 -p 6379
退出Redis客户端:exit或者quit指令。
1.4:Redis基本知识
1. 测试Redis性能
2. Redis沟通命令,查看状态
redis >ping 返回PONG
解释:输入ping,redis给我们返回PONG,表示redis服务运行正常
3. 查看redis服务器的统计信息:info
语法:info [section]
作用:以一种易于解释且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。section 用来返回指定部分的统计信息。 section的值:server , clients ,memory等等。不加section 返回全部统计信息
返回值:指定section的统计信息或全部信息
例1:统计server的信息
例2:统计全部信息
4. redis默认使用16个库
Redis默认使用16个库,从0到15。 对数据库个数的修改,在redis.conf文件中databases 16,理论上可以配置无限多个。
Redis的库和关系型数据库中的数据库实例类似,但又有一些不同,比如redis中各个库不能自定义命名,只能用序号表示,redis中各个库不是完全独立的,使用时最好一个应用使用一个redis实例,不建议一个redis实例中保存多个应用的数据。Redis实例本身所占存储空间其实是非常小的,因此不会造成存储空间的浪费。
5. 切换库命令:select db
默认使用第0个,如果要使用其他数据库,命令是 select index
6. 查看当前数据库中key的数目:dbsize
语法:dbsize
作用:返回当前数据库的 key 的数量。
返回值:数字,key的数量
7. 查看当前数据库中有哪些key:keys *
8. 清空当前库:flushdb
9. 清空所有数据库:flushall
这也体现出redis中的库并不是完全无关的。
10. config get * 获得redis的所有配置值
语法:config get parameter
作用:获取运行中Redis服务器的配置参数, 获取全部配置可以使用*。参数信息来自redis.conf 文件的内容。
例1:获取数据库个数 config get databases
例2:获取端口号config get port
1.5:手册地址:
redis英文版命令大全:
Commands | Redis
redis中文版命令大全:
Redis 命令参考 — Redis 命令参考
3:Redis的五种数据类型
A: 字符串类型 string
字符串类型是Redis中最基本的数据结构,它能存储任何类型的数据,包括二进制数
据,序列化后的数据,JSON化的对象甚至是一张图片。最大512M。
B: 列表类型 list
Redis列表是简单的字符串列表,按照插入顺序排序,元素可以重复。你可以添加一个元素到列表的头部(左边)或者尾部(右边),底层是个链表结构。
C: 集合类型 set
Redis的Set是string类型的无序无重复集合。
D: 哈希类型 hash
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
E: 有序集合类型 zset (sorted set)
Redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。
不同的是zset的每个元素都会关联一个分数(分数可以重复),redis通过分数来为集合中的成员进行从小到大的排序。
4: Redis的常用操作命令
4.1 Redis的Key的操作命令
语法:keys pattern
作用:查找所有符合模式pattern的key. pattern可以使用通配符。
通配符:
- *:表示0或多个字符,例如:keys * 查询所有的key。
- ?:表示单个字符,例如:wo?d , 匹配 word , wood
- [] :表示选择[]内的一个字符,例如wo[or]d, 匹配word, wood, 不匹配wold、woord
4.2 exists
语法:exists key [key…]
作用:判断key是否存在
返回值:整数,存在key返回1,其他返回0。使用多个key,返回存在的key的数量。
4.3 move
语法:move key db
作用:移动key到指定的数据库,移动的key在原库被删除。
返回值:移动成功返回1,失败返回0.
4.4 ttl
语法:ttl key
作用:查看key的剩余生存时间(ttl: time to live),以秒为单位。
返回值:
1.-1 :没有设置key的生存时间, key永不过期。
2.-2:key不存在
4.5 expire
语法:expire key seconds
作用:设置key的生存时间,超过时间,key自动删除。单位是秒。
返回值:设置成功返回数字 1,其他情况是 0 。
4.6 type
语法:type key
作用:查看key所存储值的数据类型
返回值:字符串表示的数据类型
- none (key不存在)
- string (字符串)
- list (列表)
- set (集合)
- zset (有序集)
- hash (哈希表)
4.7 rename
语法:rename key newkey
作用:将key改为名newkey。当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。
当 newkey 已经存在时, RENAME 命令将覆盖旧值。
4.8 del
语法:del key [key…]
作用:删除存在的key,不存在的key忽略。
返回值:数字,删除的key的数量。