Redis教程

Redis知识点

本文主要是介绍Redis知识点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.了解NoSql

NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系 型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

NoSql数据库的优势:

(1) 易扩展

(2)大数据量,高性能

(3)灵活的数据模型

(4) 高可用

 2.Redis介绍

2.1什么是Redis

全称:REmote DIctionary Server(远程字典服务器)。是完全开源免费的,用C语言编写的, 遵守BCD协议。是 一个高性能的(key/value)分布式内存数据库,

Redis 与其他 key - value 缓存产品有以下三个特点

(1) Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

(2) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储

(3) Redis支持数据的备份,即master-slave(主从)模式的数据备份

2.2 Redis优势

(1) 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

(2) 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。

(3) 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。

(4) 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性

(5) 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不 用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

(6) 使用多路I/O复用模型,非阻塞IO;

2.3 Redis应用场景

(1) 缓存(数据查询,短连接,新闻内容,商品内容等),使用最多

(2) 聊天室在线好友列表

(3) 任务队列(秒杀,抢购,12306等)

(4) 应用排行榜

(5) 网站访问统计

(6) 数据过期处理(可以精确到毫秒)

(7) 分布式集群架构中的session问题

3.Linux下安装Redis

Redis的后端启动:[root@localhost redis]# ./bin/redis-server ./redis.conf

Redis的停止:[root@localhost redis]# ./bin/redis-cli shutdown

客户端访问redis:./redis-cli -h ip地址 -p 端口号

退出客户端:  quit

第三方工具(redis-desktop-manager)操作redis

4.Redis数据结构 

Redis是一种基于内存的数据库,并且提供一定的持久化功能,它是一种键值(key-value)数据库,使用 key 作为 索引找到当前缓存的数据,并且返回给程序调用者。

当前的 Redis 支持 6 种数据类型,它们分别是字符串(String)、列表(List)、集合(set)、哈希结构 (hash)、有序集合(zset)和基数(HyperLogLog)

5.Redis常用指令 

5.1 String 类型

赋值语法:SET key value

取值语法: GET key

127.0.0.1:6379> set k1 zhangsan

OK

127.0.0.1:6379> get k1

"zhangsan"

设置多个键语法: MSET key value [key value …]

获取多个键值语法: MGET key [key …]

127.0.0.1:6379> mset k2 lisi k3 wangwu

OK

127.0.0.1:6379> mget k2 k3

1) "lisi"

2) "wangwu"

删除语法:DEL key

127.0.0.1:6379> del k3

(integer) 1

127.0.0.1:6379> get k3

(nil)

5.2 字符串数字的递增与递减

递增数字语法: INCR key

递减数值语法: DECR key

增加指定的整数语法: INCRBY key increment

减少指定的整数 语法:DECRBY key decrement

5.3 Hash散列(了解)

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类 型。相当于是对象格式的存储

赋值语法: HSET key field value

值语法: HGET key field

设置多个字段语法: HMSET key field value [field value ...]

取多个值语法: HMGET key field [field ...]

获取所有字段值语法:HGETALL key

删除字段语法:HDEL key field [field ...]

5.4 队列List

Redis的list是采用来链表来存储,双向链表存储数据,特点:增删快、查询慢(Linkedlist).这个队列是有序的。

向列表左边增加元素: LPUSH key value [value ...]

从列表左边弹出元素: LPOP key(临时存储,弹出后,从队列中清除)

向列表右边增加元素 : RPUSH key value [value ...]

从列表右边弹出元素: RPOP key

获取列表中元素的个数: LLEN key

 

查看列表语法:LRANGE key start stop

将返回start、stop之间的所有元素(包含两端的元素),索引从0开始,可以是负数,如:“-1”代表最后的一个元 素。

临时存储。先进先出。使用双向链表:

1,左边进,右边去

2,右边进,左边去。

5.5 Set集合

Set集合类型:无序、不可重复

增加元素语法:SADD key member [member ...]

获得集合中的所有元素 : smembers key

删除元素语法: SREM key member [member ...]

判断元素是否在集合中: SISMEMBER key member

5.6 Zset有序集合(了解)

Sortedset又叫zset,是有序集合,可排序的,但是唯一。 Sortedset和set的不同之处,是会给set中的元素添加一个 分数,然后通过这个分数进行排序。

增加元素:ZADD key score member [score member ...]

向有序集合中加入一个元素和该元素的分数(score),如果该元素已经存在则会用新的分数替换原有的分数。

添加带分数(可用学生成绩,销售数量等来做分数,方便计算排序): 

获得排名在某个范围的元素列表,并按照元素分数降序返回

语法:ZREVRANGE key start stop [WITHSCORES]

获取元素的分数 :ZSCORE key member

删除元素ZREM key member [member ...]

获得元素的分数的可以在命令尾部加上WITHSCORES参数

 

给某一个属性加分数或减分,减分时使用负数:

5.7 HyoperLogLog命令

5.8 其他命令 

(1) keys返回满足给定pattern 的所有key

(2) exists确认一个key 是否存在,存在返回1

(3) del删除一个key

 

(4) rename重命名key:rename oldkey newkey

 

(5) type返回值的类型: type key 

 

(6) EXPIRE key seconds

设置key的生存时间(单位:秒)key在多少秒后会自动删除

TTL key 查看key剩余的生存时间

PERSIST key 清除生存时间 

(7) 获取服务器信息和统计:info

(8) 删除当前选择数据库中的所有key:flushdb

(9) 删除所有数据库中的所有key:flushall 

 

 5.9 Redis的多数据库

一个redis实例key包括多个数据库,客户端可以指定连接某个redis实例的哪个数据库,就好比一个mysql中创建多 个数据库,客户端连接时指定连接哪个数据库。

一个redis实例最多可提供16个数据库,下标从0-15,客户端默认连接第0号数据库,也可以通过select选择连接哪 个数据库,如下连接1号库:select 1

将key的数据移动到1号数据库:

move key 数据库编号

6.Redis的事务管理

 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客 户端发送来的命令请求所打断。

事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

一个事务从开始到执行会经历以下三个阶段: 开始事务。 命令入队。 执行事务

 实例 以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事 务, 一并执行事务中的所有命令:

 

7.Redis发布订阅模式

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

在我们实例中我们创建了订阅频道名为 redisMessage:

现在,我们先重新开启个 redis 客户端,然后在同一个频道 redisMessage 发布两次消息,订阅者就能接收到消 息。 

订阅者的客户端会显示如下消息:

8.Jedis连接Redis 

第一步:创建项目,导入依赖

第二步:链接服务器

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这篇关于Redis知识点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!