redis知识点
来源:互联网 发布:自学程序员要看什么书 编辑:程序博客网 时间:2024/06/15 11:53
Redis有三个主要特点,使它优越于其它键值数据存储系统 。
1、Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化。
2、与其它键值数据存储相比,Redis有一组相对丰富的数据类型。
3、Redis可以将数据复制到任意数量的从机中。以下是Redis的一些优点。
异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
Redis与其他键值存储系统
Redis是键值数据库系统的不同进化路线,它的值可以包含更复杂的数据类型,可在这些数据类型上定义原子操作。
Redis是一个内存数据库,但在磁盘数据库上是持久的,因此它代表了一个不同的权衡,在这种情况下,在不能大于存储器(内存)的数据集的限制下实现非常高的写和读速度。
内存数据库的另一个优点是,它与磁盘上的相同数据结构相比,复杂数据结构在内存中存储表示更容易操作。 因此,Redis可以做很少的内部复杂性。
开启redis服务
redis-server redis.conf
连接客户端
[root@cqs redis-2.8.3]# redis-cli -h 127.0.0.1 -p 6379 -a "" #连接客户端,-h 主机ip -p 端口号 -a 认证密码
查看当前的配置
127.0.0.1:6379> config get * #获取全部的配置值
127.0.0.1:6379> config get daemonize #获取daemonize配置值
设置对应的配置值
127.0.0.1:6379> config set loglevel "notice" #设置loglevel的值
redis的数据类型,支持5种。
1、字符串
Redis中的字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着它们的长度不由任何特殊的终止字符决定。因此,可以在一个字符串中存储高达512兆字节的任何内容。
eg.
127.0.0.1:6379>set foo "bar"
OK
127.0.0.1:6379>get foo
"bar"
127.0.0.1:6379> del foo
(integer) 1
127.0.0.1:6379> get foo
(nil)
2、散列/哈希
Redis散列/哈希(Hashes)是键值对的集合。Redis散列/哈希是字符串字段和字符串值之间的映射。因此,它们用于表示对象。每个散列/哈希可以存储多达2^32 - 1个健-值对(超过40亿个)。
eg.
127.0.0.1:6379> HMSET usekey username "cqs" password "cqs123" point 200
OK
127.0.0.1:6379> hgetall usekey
1) "username"
2) "cqs"
3) "password"
4) "cqs123"
5) "point"
6) "200"
3、列表
Redis列表只是字符串列表,按插入顺序排序。可以向Redis列表的头部或尾部添加元素。列表的最大长度为2^32 - 1个元素(4294967295,每个列表可容纳超过40亿个元素)。
eg.
127.0.0.1:6379> LPUSH alist "cjj"
(integer) 1
127.0.0.1:6379> LPUSH alist "cjh"
(integer) 2
127.0.0.1:6379> LPUSH alist "cqw"
(integer) 3
127.0.0.1:6379> LLEN alist
(integer) 3
127.0.0.1:6379> LRANGE alist 0 2
1) "cqw"
2) "cjh"
3) "cjj"
4、集合
Redis集合是字符串的无序集合。在Redis中,您可以添加,删除和测试成员存在的时间O(1)复杂性。一个集合中的最大成员数量为2^32 - 1(即4294967295,每个集合中元素数量可达40亿个)个。
eg.
127.0.0.1:6379> SADD databases "mysql"
(integer) 1
127.0.0.1:6379> SADD databases "pgsql"
(integer) 1
127.0.0.1:6379> SADD databases "oracle"
(integer) 1
127.0.0.1:6379> SADD databases "oracle" #被oracle添加了两次,但是由于集合的唯一属性,所以它只算添加一次。
(integer) 0
127.0.0.1:6379> SMEMBERS databases
1) "oracle"
2) "pgsql"
3) "mysql"
5、可排序集合
Redis可排序集合类似于Redis集合,是不重复的字符集合。 不同之处在于,排序集合的每个成员都与分数相关联,这个分数用于按最小分数到最大分数来排序的排序集合。虽然成员是唯一的,但分数值可以重复。
eg.
127.0.0.1:6379> ZADD sort_databases 0 "mysql"
(integer) 1
127.0.0.1:6379> ZADD sort_databases 0 "pgsql"
(integer) 1
127.0.0.1:6379> ZADD sort_databases 1 "oracle"
(integer) 1
127.0.0.1:6379> ZADD sort_databases 1 "oracle"
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE sort_databases 0 5
1) "mysql"
2) "pgsql"
3) "oracle"
Redis发送订阅
Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 发布订阅(pub/sub)实现了消息系统,发送者(在redis术语中称为发布者)在接收者(订阅者)接收消息时发送消息。传送消息的链路称为信道。
在Redis中,客户端可以订阅任意数量的信道。
在以下示例中,一个客户端订阅名为“redisChat”的信道。
127.0.0.1:6379> SUBSCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"
3) (integer) 1
1) "message"
2) "redisChat"
3) "Learn redis by yii"
两个客户端在名称为“redisChat”的相同信道上发布消息,并且上述订阅的客户端接收消息。
当发送端发布一条信息时,订阅端会实时收到发送端的信息。
127.0.0.1:6379> PUBLISH redisChat "Redis is a great caching technique"
(integer) 0
127.0.0.1:6379> PUBLISH redisChat "Learn redis by yii"
(integer) 1
Redis事务
Redis事务允许在单个步骤中执行一组命令。以下是事务的两个属性:
事务中的所有命令作为单个隔离操作并按顺序执行。不可以在执行Redis事务的中间向另一个客户端发出的请求。
Redis事务也是原子的。原子意味着要么处理所有命令,要么都不处理。
Redis事务由命令MULTI命令启动,然后需要传递一个应该在事务中执行的命令列表,然后整个事务由EXEC命令执行。
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set mykey "123"
QUEUED
127.0.0.1:6379> get myke
QUEUED
127.0.0.1:6379> get mykey
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) (nil)
3) "123"
127.0.0.1:6379>
Redis备份
Redis数据库可以使用安全的方案,使得进行连接的任何客户端在执行命令之前都需要进行身份验证。要保护Redis安全,需要在配置文件中设置密码。
获取当前redis服务器的认证密码
127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
设置当前redis服务器的认证密码
127.0.0.1:6379> CONFIG SET requirepass "123"
OK
设置密码后,如果任何客户端运行命令而不进行身份验证,则会返回一个(error) NOAUTH Authentication required.的错误信息。 因此,客户端需要使用AUTH命令来验证。
127.0.0.1:6379> AUTH "123"
OK
Redis客户端连接
Redis在配置的监听TCP端口和Unix套接字上等待和接受客户端的连接(如果已启用)。 当接受新的客户端连接时,执行以下操作。
由于Redis使用复用和非阻塞I/O,因此客户端套接字处于非阻塞状态。
设置TCP_NODELAY选项是为了确保连接不延迟。
创建可读文件事件,以便Redis能够在套接字上读取新数据时收集客户端查询。
最大客户数:在Redis配置文件(redis.conf)中,有一个名称为maxclients的属性,它描述了可以连接到Redis的客户端的最大数量。
127.0.0.1:6379> CONFIG GET maxclients
1) "maxclients"
2) "10000"
redis键命令
下表列出了与键相关的一些基本命令。
下表列出了一些用于在Redis中管理字符串的基本命令。
1
16INCRBY key increment将键的整数值按给定的数值增加17INCRBYFLOAT key increment将键的浮点值按给定的数值增加18DECR key将键的整数值减1
19DECRBY key decrement按给定数值减少键的整数值20APPEND key value将指定值附加到键redis连接命令
下表列出了与Redis连接相关的一些基本命令。
redis客户端命令
CLIENT SETNAME
设置的当前连接的名称4CLIENT PAUSE这是一个连接控制命令,能够将所有Redis客户端按指定的时间量(以毫秒为单位)挂起5CLIENT KILL此命令关闭指定的客户端连接。附:全文的相关知识链接:http://www.yiibai.com/redis/redis_quick_guide.html- redis知识点
- Redis知识点
- Redis知识点
- Redis知识点详解
- redis知识点总结
- Redis知识点总结
- redis知识点--不断总结
- Redis知识点详解
- redis相关知识点整理
- redis知识点总结
- Redis知识点详解
- Redis知识点详解
- Redis基本知识点
- Redis的常见知识点
- redis运维的一些知识点
- Redis键值存储系统——基本知识点
- redis消息队列性能测试及知识点整理
- 知识点
- USACO 5.3解题报告
- Spring AOP基础
- 二叉排序树
- Could not resolve bean definition resource pattern [classpath:spring/applicationContext-*.xml]
- java 包的创建及导入
- redis知识点
- Ural 2067 Friends and Berries 【思维】
- JavaScript正则表达式
- 笔记5
- 漫谈iOS Crash收集框架
- IPPI函数命名格式
- 蓝桥杯 历届试题 猜字母
- javascripht 中将字符串转换成json的三种方式
- Linux CentOS 7的图形界面安装 GNOME、KDE等