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

redis 数据库 创建 redis数据库的使用及原理_redis

 

3.Redis操作的基本原理图

redis 数据库 创建 redis数据库的使用及原理_Redis_02

4. Redis的安装和基本使用

Redis的启动:

启动Redis的服务器端程序(redis-server.exe),直接双击即可运行

redis 数据库 创建 redis数据库的使用及原理_redis 数据库 创建_03

启动Redis客户端程序(redis-cli.exe),直接双击即可运行(连接到本地)

redis 数据库 创建 redis数据库的使用及原理_redis_04

 

 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:世外桃源

redis 数据库 创建 redis数据库的使用及原理_字符串_05

存放的时候编码可能会有问题,但读出来是没有问题的,不用担心


 >>> 3. String(字符串)——CRUD

举例说明:Redis的String字符串的CRUD操作。

set【如果存在就相当于修改,不存在则就是添加】/get/del

查询:get key

redis 数据库 创建 redis数据库的使用及原理_redis 数据库 创建_06

 删除: del key

redis 数据库 创建 redis数据库的使用及原理_Redis_07

4. String(字符串)——使用细节和注意事项

1)setex(set with expire)键秒值:设置一个键值,可以指定键的保存时间,单位为s

redis 数据库 创建 redis数据库的使用及原理_redis 数据库 创建_08

 解释:设置一个k1键,值为hello,you,设置的超时时长为30s,过了30s后键值自动删除

2)mset【同时设置一个或多个key-value对】

redis 数据库 创建 redis数据库的使用及原理_redis_09

3)mget【同时获取多个key-value】

redis 数据库 创建 redis数据库的使用及原理_字符串_10

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

快速演示:

redis 数据库 创建 redis数据库的使用及原理_redis_11

 

注:value的引号可以不加,存储的value全是字符串

hset  新增

hget  查询

hgetall  查询所有的 field-value

hdel  删除

2)Hash——使用细节和注意事项

再给user设置 name 和 age时,前面我们是一步一步设置,使用hmset和hgetall可以一次性来设置多个field的值和一次性获取全部field的值,hmget可以一次性获取多个field的值

redis 数据库 创建 redis数据库的使用及原理_redis_12

redis 数据库 创建 redis数据库的使用及原理_Redis_13

hlen 统计一个hash有几个元素

hexists key field  查看哈希表key中,给定域field是否存在

redis 数据库 创建 redis数据库的使用及原理_redis_14

6. List(列表)——介绍

列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

List本质是个链表,List的元素是有序的,元素的值可以重复

举例,存放多个地址信息:

city  北京 上海 广州

说明:

key:city

北京  上海  广州 就是三个元素

>>> 入门案例

redis 数据库 创建 redis数据库的使用及原理_Redis_15

 

 lpush key value [...value]:从左边往里面放数据

lrange key start stop:查询列表的数据,stop为-1时,表示列表的最后一个元素

redis 数据库 创建 redis数据库的使用及原理_Redis_16

 7. List(列表)——CRUD

举例说明Redis的List的CRUD操作。

lpush/rpush/lrange/lpop/rpop/del/

说明:

List画图理解(可以把1理解成一根管道)

redis 数据库 创建 redis数据库的使用及原理_redis 数据库 创建_17

插入abc用lpush,插入de用rpush插入

 >>> herosList的演示:图片是连续的

redis 数据库 创建 redis数据库的使用及原理_字符串_18

redis 数据库 创建 redis数据库的使用及原理_redis 数据库 创建_19

 指令可以查看官方文档(非常详细),lpop会将列表左边查询一个数据,并从列表中移除

>>> List——使用细节和注意事项

(1)lindex:按照索引下标获取元素(从左到右,编号从0开始)

(2)LLEN key:返回列表key的长度,如果key不存在,则key被解释为一个空列表,返回0

(3)List的其它说明:

     > List数据,可以从左或右,插入添加

     >如果值全移除了,对应的键也就消失了

redis 数据库 创建 redis数据库的使用及原理_redis 数据库 创建_20

 

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...

redis 数据库 创建 redis数据库的使用及原理_redis 数据库 创建_21

sadd key 值1 值2 ....

smembers key 查看set集合(取出所有的元素)

如果插入重复的fields,不会插入进去,也就是说set中无重复项

(5)Set(集合)——CRUD

举例说明Redis的Set的CRUD操作

smembers【取出所有的值】

sismember【判断值是否是成员】

srem【删除指定值】

>>> 演示添加多个电子邮件信息的案例

redis 数据库 创建 redis数据库的使用及原理_Redis_22