(001)Redis 基础概括

一、初识Redis

1、介绍 redis 

高性能(存在内存)
持久化(异步保存至磁盘中,aof和rdb两种方式)
多类型( Strings, Lists, Hashes, Sets 及 Ordered Sets ...)
多功能(事务、发布订阅、排行榜、社交网络...)
多支持(遵守BSD,支持多种语言如php\java\python...)
单线程、高可用、分布式
(单线程,只能处理一个任务之后才能进行下一个命令,所以要避免长慢查询!)

2、下载安装:

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz -C /opt/
$ cd redis-5.0.5
$ make && make install

3、安装成功之后,在 src/ 下有几个可执行文件: 

>>> redis-server           # 启动服务
>>> redis-cli                  # 交互式客户端
>>> redis-beachmark    # 性能
>>> redis-check-aof      # AOF修复
>>> redis-check-dump  # RDB检测
>>> redis-senteinel       # 高可用

4、启动方式:

>>>redis-server                                         # 普通启动
>>>redis-server  --port6380                      # 动态参数启动
>>>redis-server config/redis-6379.conf    # 配置文件启动

5、常见配置: 

[root@atong redis-5.0.5]# mkdir config
[root@atong redis-5.0.5]# cp redis.conf ./config/redis-6379.conf
[root@atong redis-5.0.5]# cd config
[root@atong config]# vim ./redis-6379.conf 

daemonize yes     # 守护进程
port 6379              # 端口
logfile 6379.log     # 日志名字
dir /opt/redis/data # 工作目录

扫描二维码关注公众号,回复: 9832622 查看本文章

 6.验证启动

ps -ef | grep redis
netstat -anptl | grep redis
redis-cli -h 127.0.0.1 -p 6379 ping

二、命令使用基础

1.通用命令

KEYS pattern               # 不建议使用,单线程阻塞
dbsize
TYPE key 
EXISTS key 
DEL key    
flushall
EXPIRE key seconds  # 设置过期时间
PERSIST key              # 取消过期时间
TTL key                       # 查看过期时间(-1永久、-2已不存在)

2.String 字符串

 - SET key value                              # ex 30 存在时间30秒 # px 30 存在时间30豪秒  # nx 不存在时设置 # xx 存在时设置
 - MSET key value [key value ...] 
 - GET key
 - MGET key1 key2 ...
 - INCR key
 - INCRBY key increment
 - DECR key
 - DECRBY key decrement
 - STRLEN key
 - GETRANGE key start end
 - APPEND key value                    # 拼接字符串
 - SETNX key value                       # key 不存在时设置
 - SET key value XX                      # key 存在时设置
 - SETEX key seconds value        # 过期时间设为 seconds
 - MSETNX key value [key value ...] 
 - getset                                         # 设置值并返回旧值
 - incrbyfloat                                  #自增浮点数

 2.Hash 哈希

 - HSET key field value 
 - HMSET key field1 value1 [field2 value2 ] 
 - HGET key field 
 - HMGET key field1 [field2] 
 - HGETALL key 
 - HKEYS key 
 - HVALS key 
 - HLEN key 
 - HDEL key field1 [field2] 
 - HEXISTS key field 
 - HINCRBY key field increment 
 - HSETNX key field value 

# 为什么不直接字符串保存系列化的一组信息呢?这样每更新一个字段的值都需要取出全部值,较麻烦,哈希更好,更省内存,但无法设置属性的过期时间~(hash可以看作一个小的redis)

3.List 列表

 - LPUSH key value1 [value2] 
 - RPUSH key value1 [value2] 
 - LRANGE key start stop 
 - LINSERT key BEFORE|AFTER pivot value  # 在某值之前或之后插入新值
 - LPOP key 
 - RPOP key 
 - LREM KEY_NAME COUNT VALUE              # 移除count(<0左|>0右|0全部)个VALUE 值
 - LTRIM KEY_NAME START STOP                 # 移除下标 (START~STOP)之外的值
 - LINDEX key index                                          # 通过索引获取列表中的元素
 - LLEN key 
 - LSET key index value 
# 应用:栈(lpush + lpop)、队列(lpush + rpop)、消息队列(lpush + brpop)

4.集合

(无序 无重复 集合间的运算)
 - SADD key member1 [member2] 
 - SREM key member1 [member2] 
 - SCARD key                                              # 获取集合的成员数
 - SISMEMBER key member                       #判断 member 元素是否是集合 key 的成员
 - SMEMBERS key                                      # 返回集合中的所有成员(无序)
 - SRANDMEMBER key [count]                  #返回集合中一个或多个随机数
 - SPOP key                                                # 移除并返回集合中的一个随机元素
# 集合间的运算(交 、 差 、 并)
 - SDIFF key1 [key2]                                   # 返回给定所有集合的差集
 - SINTER key1 [key2]                                # 返回给定所有集合的交集
 - SUNION key1 [key2]                               # 返回所有给定集合的并集

 5.有序集合

ZADD key score1 member1 [score2 member2] 
ZREM key member [member ...] 
ZSCORE key member                                 # 返回成员的分数值
ZINCRBY key increment member 
ZCARD key 
ZRANK key member                                   #返回有序集合中指定成员的索引
ZRANGE key start stop
ZRANGEBYSCORE key min max              # 通过分数返回有序集合指定区间内的成员
ZCOUNT key min max                                #计算在有序集合中指定区间分数的成员数
ZREMRANGEBYRANK key start stop        # 移除有序集合中给定的排名区间的所有成员
ZREMRANGEBYSCORE key min max      # 移除有序集合中给定的分数区间的所有成员

三、Redis 的其它功能

1.慢查询

# 慢查询的时间不包括请求、队列等时间,只算 redis 执行命令的时间

>>> 两个配置
# 阈值 slowlog-log-slower-than,默认值10000
slowlog-log-slower-than = 10000    # 执行时间超过10微妙则记录日志
# slowlog-log-slower-than = 0         # 表示记录所有命令。
# slowlog-log-slower-than < 0         # 表示不记录慢查询
# 日志的条数,慢查询最大的条数,当slowlog超过设定的最大值后,会将最早的slowlog删除
slowlog-max-len 128

慢查询命令

127.0.0.1:6379> slowlog get    # 获取慢查询队列
127.0.0.1:6379> slowlog len    # 获取慢查询长度
127.0.0.1:6379> slowlog reset # 清空慢查询队列

2.管道(pipeline) 

响应时间 = 发起访问 + 处理 + 返回结果 
(执行方式类似事务,开启管道,拼写语句,执行管道,以此减少网络时间)
php 例子:
$pipe = $redis->multi(Redis::PIPELINE);
for ($i=0; $i<100000; $i++){
    $key = "php:user:id_".$i;
    $redis->set($key,json_encode(time()));
}
$pipe->exec();

3.发布订阅

# 将信息message发送到指定的频道channel。
PUBLISH channel message   
# 订阅给定的一个或多个频道的信息。
SUBSCRIBE channel [channel ...]
#订阅一个或多个符合给定模式的频道;每个模式以 * 作为匹配符。
PSUBSCRIBE pattern [pattern ...]
#指示客户端退订给定的频道,如果没有频道被指定,那么命令订阅的所有频道都会被退订。
UNSUBSCRIBE [channel [channel ...]]
#列出当前的活跃频道。活跃频道指的是那些至少有一个订阅者的频道, 订阅模式的客户端不计算在内。
PUBSUB CHANNELS [pattern]
#返回给定频道的订阅者数量, 订阅模式的客户端不计算在内。
PUBSUB NUMSUB [channel-1 ... channel-N]
#返回订阅模式的数量。这个命令返回的不是订阅模式的客户端的数量, 而是客户端订阅的所有模式的数量总和。
PUBSUB NUMPAT

4.位图(bitmap)

利用二进制特点,判断用户是否做了操作!类似php位运算符;

 5.Hyperloglog

极小的空间完成数量统计;

6.geo

记录地理位置、计算位置距离、查找范围之内位置等

>>>imooc介绍: https://blog.csdn.net/weixin_37778801/article/category/8500929

发布了46 篇原创文章 · 获赞 42 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Phplayers/article/details/93599394
今日推荐