redis知识点

Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。
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键命令

下表列出了与键相关的一些基本命令。

编号 命令 描述
1 DEL key 此命令删除一个指定键(如果存在)。
2 DUMP key 此命令返回存储在指定键的值的序列化版本。
3 EXISTS key 此命令检查键是否存在。
4 EXPIRE key seconds 设置键在指定时间秒数之后到期/过期。
5 EXPIREAT key timestamp 设置在指定时间戳之后键到期/过期。这里的时间是Unix时间戳格式。
6 PEXPIRE key milliseconds 设置键的到期时间(以毫秒为单位)。
7 PEXPIREAT key milliseconds-timestamp 以Unix时间戳形式来设置键的到期时间(以毫秒为单位)。
8 KEYS pattern 查找与指定模式匹配的所有键。
9 MOVE key db 将键移动到另一个数据库。
10 PERSIST key 删除指定键的过期时间,得永生。
11 PTTL key 获取键的剩余到期时间。
12 RANDOMKEY 从Redis返回一个随机的键。
13 RENAME key newkey 更改键的名称。
14 PTTL key 获取键到期的剩余时间(以毫秒为单位)。
15 RENAMENX key newkey 如果新键不存在,重命名键。
16 TYPE key 返回存储在键中的值的数据类型。
redis字符串命令

下表列出了一些用于在Redis中管理字符串的基本命令。

编号 命令 描述说明
1 SET key value 此命令设置指定键的值。
2 GET key 获取指定键的值。
3 GETRANGE key start end 获取存储在键上的字符串的子字符串。
4 GETSET key value 设置键的字符串值并返回其旧值。
5 GETBIT key offset 返回在键处存储的字符串值中偏移处的位值。
6 MGET key1 [key2..] 获取所有给定键的值
7 SETBIT key offset value 存储在键上的字符串值中设置或清除偏移处的位
8 SETEX key seconds value 使用键和到期时间来设置值
9 SETNX key value 设置键的值,仅当键不存在时
10 SETRANGE key offset value 在指定偏移处开始的键处覆盖字符串的一部分
11 STRLEN key 获取存储在键中的值的长度
12 MSET key value [key value …] 为多个键分别设置它们的值
13 MSETNX key value [key value …] 为多个键分别设置它们的值,仅当键不存在时
14 PSETEX key milliseconds value 设置键的值和到期时间(以毫秒为单位)
15 INCR key 将键的整数值增加1
16 INCRBY key increment 将键的整数值按给定的数值增加
17 INCRBYFLOAT key increment 将键的浮点值按给定的数值增加
18 DECR key 将键的整数值减1
19 DECRBY key decrement 按给定数值减少键的整数值
20 APPEND key value 将指定值附加到键

redis连接命令

下表列出了与Redis连接相关的一些基本命令。

序号 命令 说明
1 AUTH password 使用给定的密码验证服务器
2 ECHO message 打印给定的字符串信息
3 PING 检查服务器是否正在运行
4 QUIT 关闭当前连接
5 SELECT index 更改当前连接的所选数据库

redis客户端命令
编号 命令 描述
1 CLIENT LIST 返回连接到Redis服务器的客户端列表
2 CLIENT SETNAME 为当前连接分配/设置新的名称
3 CLIENT GETNAME 返回由CLIENT SETNAME设置的当前连接的名称
4 CLIENT PAUSE 这是一个连接控制命令,能够将所有Redis客户端按指定的时间量(以毫秒为单位)挂起
5 CLIENT KILL 此命令关闭指定的客户端连接。
附:全文的相关知识链接:http://www.yiibai.com/redis/redis_quick_guide.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值