redis是基于C语言开发的一个开源非关系型内存数据库(key/value型数据库)

特点

  • 反对数据长久化
  • 存储构造反对多种数据结构 String list Set ZSet Hash
  • 反对数据备份 master-slave 模式数据备份

劣势

  • 高性能
  • 丰盛的数据结构
  • 原子性,反对事务
  • 丰盛的个性 (publish/subscribe, 告诉, key 过期)

利用

缓存,数据库,消息中间件等

装置并启动

如下图所示

客户端

redis-cli

应用 redis-cli -h 查看帮忙信息

参考网站

  • https://redis.io/
  • http://redis.cn/

数据结构-Strings 字符串类型

redis中最根本的数据类型,一个key对应一个value

二进制平安 能够蕴含 数字 字符串 图片 序列化对象等

string类型能够用来存储缓存,session,计数器(redis单线程模式,一个命令执行完 后才会执行下一个命令)等

常用命令 set get del

127.0.0.1:6379> set name 123OK127.0.0.1:6379> get name"123"127.0.0.1:6379> del name(integer) 1127.0.0.1:6379> get name(nil)

INCR(递增1) INCRBY(递增一个范畴) DECR(递加1) DECRBY(递加一个范畴)

127.0.0.1:6379> get counter(nil)127.0.0.1:6379> INCR conter(integer) 1127.0.0.1:6379> INCR conter(integer) 2127.0.0.1:6379> INCR conter(integer) 3127.0.0.1:6379> INCR conter(integer) 4127.0.0.1:6379> get conter"4"127.0.0.1:6379> INCRBY conter 10(integer) 14127.0.0.1:6379> get counter(nil)127.0.0.1:6379> get couter(nil)127.0.0.1:6379> get conter"14"127.0.0.1:6379> DECR conter(integer) 13127.0.0.1:6379> DECRBY Conter 3(integer) -3127.0.0.1:6379> DECRBY conter 3(integer) 10

ps:命令不辨别大小写,key辨别大小写

数据结构-Lists 列表类型

双向链表,左右都能够插入和 删除数据

一个列表最多能够蕴含2^32-1个元素(约40亿个元素)

常用命令:lpush+lpop(栈stack)

127.0.0.1:6379> lpush mylist php(integer) 1127.0.0.1:6379> lpush mylist java(integer) 2127.0.0.1:6379> lpush mylist golang(integer) 3127.0.0.1:6379> LRANGE 0 10(error) ERR wrong number of arguments for 'lrange' command127.0.0.1:6379> LRANGE mylist 0 101) "golang"2) "java"3) "php"127.0.0.1:6379> lpop mylist"golang"127.0.0.1:6379> lpop mylist"java"127.0.0.1:6379> lpop mylist"php"127.0.0.1:6379> lpop mylist(nil)

常用命令:lpush+rpop(队列queue)

127.0.0.1:6379> lpush mylist php java python golang(integer) 4127.0.0.1:6379> LRANGE mylist 0 101) "golang"2) "python"3) "java"4) "php"127.0.0.1:6379> RPOP mylist "php"127.0.0.1:6379> RPOP mylist "java"

数据结构-Sets 汇合类型

保留多个字符串元素。汇合为无序的,不能通过索引下标拜访。汇合不能有反复元素。在redis中,汇合能够很不便的进行交加,并集,差集等操作。

利用场景:点赞数,珍藏书统计。给用户打标签(一个标签一个汇合)而后能够利用汇合的关系剖析用户行为

汇合常见命令(次要以s结尾)

  • sadd(向汇合中插入元素)
  • smembers(返回汇合中所有成员数)
  • sismember(判断是否是汇合中的成员)
  • scard(返回汇合中元素的个数)
127.0.0.1:6379> sadd myset hao hao1 xiaohao hao(integer) 3127.0.0.1:6379> SMEMBERS myset1) "xiaohao"2) "hao"3) "hao1"# 判断hao是否是汇合myset中的成员127.0.0.1:6379> SISMEMBER myset hao(integer) 1127.0.0.1:6379> SISMEMBER myset hao1(integer) 1127.0.0.1:6379> SISMEMBER myset hao2(integer) 0# 返回汇合中元素的个数127.0.0.1:6379> SCARD myset(integer) 3# 返回不存在的元素个数则返回0127.0.0.1:6379> SCARD myset1(integer) 0

数据结构-Sorted sets 有序汇合类型

有序汇合和汇合相似,都是不蕴含雷同字符串的合集。不同的是,有序汇合中的元素都关联一个评分,通过这个评分能够对汇合中的元素进行排序(元素不能反复,然而分数 能够反复)

应用有序汇合,你能够十分快地(O(log(N)))实现增加删除更新元素的操作。 因为元素是在插入时就排好序的,所以很快地通过评分(score)或者 位次(position)取得一个范畴的元素

利用场景:排行榜

常用命令(有序汇合中的命令通常以z结尾)

# 增加有序汇合元素127.0.0.1:6379> zadd scoreset 100 Amy 90 Bob(integer) 2127.0.0.1:6379> zadd scoreset 99 Zhangsan 91 Lisi(integer) 2# 获取有序汇合元素127.0.0.1:6379> zcard scoreset(integer) 4# 获取区间范畴元素个数127.0.0.1:6379> zcount scoreset 95 100(integer) 2# 获取某一个元素排名127.0.0.1:6379> zrevrank scoreset Lisi(integer) 2# 获取排名区间范畴127.0.0.1:6379> zrevrange scoreset 0 101) "Amy"2) "Zhangsan"3) "Lisi"4) "Bob"

数据结构-Hash 哈希

Mapmap类型,指值的自身又是一种键值对类型

利用场景:用来缓存一些对象信息,入用户信息,商品信息,对象信息等=,另外就是购物车等场景中应用.

哈希命令都是以h结尾

127.0.0.1:6379> HSET user name1 hao(integer) 1                                                                                    127.0.0.1:6379> HSET user email aaaa@qq.com(integer) 1                                                                                    127.0.0.1:6379> HSET user age 18(integer) 1                                                                                    127.0.0.1:6379> HGETALL user1) "name1"                                                                                     2) "hao"                                                                                       3) "email"                                                                                     4) "aaaa@qq.com"                                                                               5) "age"                                                                                       6) "18"                                                                                        127.0.0.1:6379> HGET user age"18"