1. Redis的基本介绍
1. Redis 是NoSQL数据库,不是传统的关系型数据库
官网:https://redis.io/ 和 http://www.redis.cn/
2. Redis: REmote Dictionary Server(远程字典服务器)。Redis性能非常高,单机能够达到15w qps,通常适合做缓存,也可以做持久化
3.是完全开源免费的,高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是最热门的NoSQL数据库之一,也称为数据结构服务器
2.Redis的安装
下载后直接解压就有Redis的服务器端程序(redis-server.ext)和客户端程序(redis-cli.exe),直接双击即可运行,并不需要安装。
这里下载:Redis-x64-3.2.100.zip
3.Redis操作的基本原理图
4. Redis的安装和基本使用
Redis的启动:
启动Redis的服务器端程序(redis-server.exe),直接双击即可运行
启动Redis客户端程序(redis-cli.exe),直接双击即可运行(连接到本地)
Redis的命令地址:
http://redisdoc.com 命令建议看Redis文档,讲解的非常好
5. Redis的基本使用
说明:Redis安装好后,默认有16个数据库,初始默认使用0号库,编号是0....15
1. 添加key-val 【set】
如: set k1 hello
2. 查看当前redis的所有key【keys *】
如:keys *
3. 获取key对应的值.【get key】
如:get k1
4. 切换redis 数据库 【select index】
如:select 1
5. 如何查看当前数据库的 key-val数量 【dbsize】
如:dbsize
6. 清空当前数据库的 key-val和清空所有数据库的key-val【flushdb flushall】
如:flushdb 【清空当前数据库】、flushall【清空0-15的全部数据库】
6. Redis的Crud操作
1. Redis的五大数据类型
Redis的五大数据类型是:String(字符串)、Hash(哈希)、List(列表)、Set(集合)和zset(sorted set:有序集合)
2. String(字符串)-介绍
string是redis最基本的类型,一个key对应一个value
string类型是二进制安全的。除普通的字符串外,也可以存放图片等数据。
redis中字符串value最大是512M
举例:存放一个地址信息:
address 世外桃源
说明:
key:address
value:世外桃源
存放的时候编码可能会有问题,但读出来是没有问题的,不用担心
>>> 3. String(字符串)——CRUD
举例说明:Redis的String字符串的CRUD操作。
set【如果存在就相当于修改,不存在则就是添加】/get/del
查询:get key
删除: del key4. String(字符串)——使用细节和注意事项
1)setex(set with expire)键秒值:设置一个键值,可以指定键的保存时间,单位为s
解释:设置一个k1键,值为hello,you,设置的超时时长为30s,过了30s后键值自动删除
2)mset【同时设置一个或多个key-value对】
3)mget【同时获取多个key-value】
5. Hash(哈希,类似golang里面的Map)——介绍
1)基本介绍
Redis hash 是一个键值对的集合。var user1 map[string]string
Redis hash 是一个string类型的field和value的映射表,hash特别适用于存储对象。
>>> 举例,存放一个User信息:(user1)
user1 name "monkey" age 500 job "golang_woker"
说明:
key:user1
name monkey 和 age 500 就是两对 field-value
快速演示:
注:value的引号可以不加,存储的value全是字符串
hset 新增
hget 查询
hgetall 查询所有的 field-value
hdel 删除
2)Hash——使用细节和注意事项
再给user设置 name 和 age时,前面我们是一步一步设置,使用hmset和hgetall可以一次性来设置多个field的值和一次性获取全部field的值,hmget可以一次性获取多个field的值
hlen 统计一个hash有几个元素
hexists key field 查看哈希表key中,给定域field是否存在
6. List(列表)——介绍
列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
List本质是个链表,List的元素是有序的,元素的值可以重复
举例,存放多个地址信息:
city 北京 上海 广州
说明:
key:city
北京 上海 广州 就是三个元素
>>> 入门案例
lpush key value [...value]:从左边往里面放数据
lrange key start stop:查询列表的数据,stop为-1时,表示列表的最后一个元素
7. List(列表)——CRUD
举例说明Redis的List的CRUD操作。
lpush/rpush/lrange/lpop/rpop/del/
说明:
List画图理解(可以把1理解成一根管道)
插入abc用lpush,插入de用rpush插入
>>> herosList的演示:图片是连续的
指令可以查看官方文档(非常详细),lpop会将列表左边查询一个数据,并从列表中移除
>>> List——使用细节和注意事项
(1)lindex:按照索引下标获取元素(从左到右,编号从0开始)
(2)LLEN key:返回列表key的长度,如果key不存在,则key被解释为一个空列表,返回0
(3)List的其它说明:
> List数据,可以从左或右,插入添加
>如果值全移除了,对应的键也就消失了
8. Set(集合)——介绍
(1)Redis的Set是string类型的无序集合。
(2)底层是HashTable数据结构,Set也是存放很多字符串元素,字符串元素是无序的,而且元素的值不能重复
(3)举例,存放多个邮件列表信息:
email 111@souhu.com 222@souhu.com
说明:
key:email
333@souhu.com 444@souhu.com 就是第二个元素
(4)redis>sadd emails xx xx xx...
sadd key 值1 值2 ....
smembers key 查看set集合(取出所有的元素)
如果插入重复的fields,不会插入进去,也就是说set中无重复项
(5)Set(集合)——CRUD
举例说明Redis的Set的CRUD操作
smembers【取出所有的值】
sismember【判断值是否是成员】
srem【删除指定值】
>>> 演示添加多个电子邮件信息的案例