Redis基本命令


非关系型数据库–redis配置

Redis 配置

Redir安装配置

wget http://download.redis.io/releases/redis-4.0.1.tar.gz
tar -zxvf  redis-4.0.1.tar.gz   -C  /usr/local/src
cd /usr/local/src/redis-4.0.1
#编译安装
yum  -y install gcc
make MALLOC=libc
make && make install
cp redis.conf /etc/redis.conf
vim /etc/redis.conf //修改如下配置
daemonize yes  
logfile "/var/log/redis.log" 
dir /data/redis_data/
appendonly yes

mkdir -p /data/redis_data
sysctl vm.overcommit_memory=1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
never  always
#重新更新配置文件
redis-server /etc/redis.conf
#进入界面
redis-cli

Redis-cli关键参数

  • -h :主机IP地址,默认是127.0.0.1
  • -p:端口,默认是6379
  • -a:密码,如果redis设置了密码,需要传递密码

Redis配置项说明

  1. daemonize :守护进程,默认关闭状态
  2. pidfile :pid文件写入/var/run/redis.pid文件,可以指定
  3. port :监听端口
  4. bind :绑定的主机地址,用于限制连接,默认只能本机 访问Redis服务器
  5. dir:本地数据库的存放目录
  6. appendonly yes :开启AOF持久化
  7. save 900 1 …多长时间执行更新操作
  8. dbfilenam dump.rdb :指定存储数据的本地数据库的文件名
  9. slaveof:指定当本地为从服务器时,主服务器的IP地址和端口
  10. masterauth:当master设置密码保活,slave服务连接master服务的密码
  11. requirepass :指定Redis的连接密码
  12. mixclients:运行 的最大的连接数

Redir持久化

• edis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)

• RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。

• AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

• 其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。

• 如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。

Redis持久化相关参数:

  • save 900 1 #表示每15分钟且至少有1个key改变,就触发一次持久化
  • save 300 10 #表示每5分钟且至少有10个key改变,就触发一次持久化
  • save 60 10000 #表示每60秒至少有10000个key改变,就触发一次持久
  • save “” #这样可以禁用rdb持久化

appendonly yes #如果是yes,则开启aof持久化

appendfilename “appendonly.aof” # 指定aof文件名字

appendfsync everysec #指定fsync()调用模式,有三种no(不调用fsync),always(每次写都会调用fsync),everysec(每秒钟调用一次fsync)。第一种最快,第二种数据最安全,但性能会差一些,第三种为这种方案,默认为第三种。

Redir数据类型

127.0.0.1:6379> set  mykey  "aminglinux.com"
OK
127.0.0.1:6379> get  mykey
"aminglinux.com"
127.0.0.1:6379> mset  key1 1 key2  a  key3  c
OK
127.0.0.1:6379> mget  key1  key2  key3
1) "1"
2) "a"
3) "c"

字符串(string)

命令含义
SET key value设置指定的key值
GET key获取指定key的值
SETEX key seconds value设置指定key的值,并将key的过期时间设为seconds秒
SETNX key value只有在key不存在时设置key的值

列表(list)

命令含义
LPUSH key value1 [value2]将一个或多个值插入到列表头部
LRANGE key start stop获取列表指定范围内的元素
RPOP key移除并获取列表最后一个元素
LLEN key获取列表长度
BRPOP key1 [key2] timeout移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
127.0.0.1:6379> LPUSH  list1  "aming"
(integer) 1
127.0.0.1:6379> LPUSH  list1  "1 2 3"
(integer) 2
127.0.0.1:6379> LPUSH  list1  "aaa  bbb"
(integer) 3
127.0.0.1:6379> LRANGE  list1  0  -1
1) "aaa  bbb"
2) "1 2 3"
3) "aming"
127.0.0.1:6379> LPOP  list
"aaa bbb"

集合(set)

命令含义
SADD key member1 [member2]向集合添加一个或多个成员
SMEMBERS key返回集合中的所有成员
SCARD key获取集合中的成员数
SINTER key1 [key2]返回给定所有集合的交集
SUNION key1 [key2]返回所有给定集合的并集
SDIFF key1 [key2]返回给定所有集合的差集
SREM key member1 [member2]移除集合中一个或多个成员
127.0.0.1:6379> SADD  set1 a
(integer) 1
127.0.0.1:6379> SADD  set1  b
(integer) 1
127.0.0.1:6379> SADD  set1  c
(integer) 1
127.0.0.1:6379> SADD  set1  d
(integer) 1
127.0.0.1:6379> SMEMBERS  set1
1) "a"
2) "b"
3) "d"
4) "c"
//删除指定元素,一个或多个
127.0.0.1:6379> SREM set1 c 

交集,补集,并集

127.0.0.1:6379> SADD  set6   11  13  15  17  19
(integer) 5
127.0.0.1:6379> SADD  set7   11  12  13  14  15
(integer) 5
127.0.0.1:6379> SINTER  set6  set7  //交集
1) "11"   
2) "13"    
3) "15"
127.0.0.1:6379> SUNION  set6  set7  //并集
1) "11"   
2) "12"    
3) "13"    
4) "14"   
5) "15"    
6) "17"    
7) "19"  
127.0.0.1:6379> SDIFF  set6  set7  //set7 差集
1) "17"  
2) "19"
127.0.0.1:6379> SDIFF  set7  set6  //set6 差集
1) "12"   
2) "14"

sorted set是有序集合,它比set多了一个权重参数score,使得集合中的元素能够按 score 进行有序排列,比如一个存储全班同学成绩的 Sorted Sets,其集合 value 可以是同学的学号,而 score 就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。

哈希(hash)

Redis hash是一个string类型的field和value的映射表,hash特别适用于存储对象,常用命令:

命令含义
HSET key field value将哈希表key中的字段field的值设为value
HGET key field获取存储在哈希表中指定字段的值
HDEL key field删除存储在哈希表中的指定字段
HKEYS key获取哈希表中所有字段
HVALS key获取哈希表中所有值
HGETALL key获取在哈希表中指定key的所有字段和值
127.0.0.1:6379> hset  hash1 name  aming
(integer) 1
127.0.0.1:6379> hget  hash1 name
"aming"
127.0.0.1:6379> hset  hash1 age 30
(integer) 1
127.0.0.1:6379> hget  hash1 age
"30"
127.0.0.1:6379> hgetall  hash1
1) "name"
2) "aming"
3) "age"
4) "30"

有序集合(sorted set)

Redis sorted set有序集合是string类型元素的集合,且不允许重复的成员。每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大排序。有序集合的成员是唯一的,但分数却可以重复。

命令作用
ZADD key score1 member1 [score2 member2]向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZRANGE key start stop [WITHSCORES]通过索引区间返回有序集合中指定区间内的成员
ZINCRBY key increment member有序集合中对指定成员的分数加上增量increment
ZREM key member [member…]移除有序集合中的一个或多个成员
127.0.0.1:6379> ZADD  set3  12  abc
(integer) 1
127.0.0.1:6379> ZADD set3  2  "cde  123"
(integer) 1
127.0.0.1:6379> ZADD set3  24  "123-aaa"
(integer) 1
127.0.0.1:6379> ZADD  set3  4  "a123a"
(integer) 1
127.0.0.1:6379> ZRANGE  set3  0 -1
1) "cde  123"
2) "a123a"
3) "abc"
4) "123-aaa"
127.0.0.1:6379> ZREVRANGE  set3  0 -1
1) "123-aaa"
2) "abc"
3) "a123a"
4) "cde  123"

Redir安全设置

设置端口

vim /etc/redis.conf#修改下方内容
port  7000
redis-cli  -p 7000

设置访问密码

CONFIG GET requirepass 查看Redis服务是否设置了密码,默认requirepass对应的参数是空的,即没有密码

[root@localhost redis-4.0.1]# redis-cli  -h 192.168.108.50
192.168.108.50:6379> CONFIG  GET  requirepass
1) "requirepass"
2) ""


#方法1:设置密码,设置后Redis重新启动仍没有密码,不建议使用
192.168.108.50:6379> CONFIG  SET  requirepass  "123"
OK
192.168.108.50:6379> CONFIG  GET  requirepass  
(error) NOAUTH Authentication required.
192.168.108.50:6379> auth  123
OK
[root@localhost redis-4.0.1]# redis-cli  -h 192.168.108.50 -a 123
#方法2:修改配置文件
vim  /etc/redis.conf
requirepass aming>com
#进入redis后可以进行相关操作,OK表示登录成功
127.0.0.1:6379> auth  'aming>com'  
OK
#或者登录时直接输入明文密码
redis-cli -a 'aming>com'     #因为有>特殊字符所以需要单引号
127.0.0.1:6379> keys *

更改config名称

#vim /etc/redis.conf
#将config命令改名
配置rename-command CONFIG "RENAME_CONFIG", 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
rename-command CONFIG  aming
#进行查看
redis-cli  -p  16379
127.0.0.1:16379> aming  get *  
禁掉config命令
rename-command CONFIG "" 
-----------------------------------------------
#杀掉进程,重新进入redis服务
[root@zhangfei ~]# redis-server /etc/redis.conf
[root@zhangfei ~]# !redis-cli
redis-cli -a 'aming>com'
127.0.0.1:6379> config get dir
(error) ERR unknown command 'config'
127.0.0.1:6379> aming get dir
1) "dir"
2) "/data/redis"
127.0.0.1:6379> quit

redis慢查询日志

编辑配置文件/etc/redis.conf

针对慢查询日志,可以设置两个参数,一个是执行时长,单位是微秒,另一个是慢查询日志的长度。当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。

配置文件

slowlog-log-slower-than 1000 //单位ms,表示慢于1000ms则记录日志
slowlog-max-len 128  //定义日志长度,表示最多存128条
slowlog get //列出所有的慢查询日志
slowlog get 2 //只列出2条
slowlog len //查看慢查询日志条数

PHP中使用redis

安装扩展模块

wget https://pecl.php.net/get/redis-4.0.1.tgz
tar  -zxvf  rediis-4.0.1.tgz
cd redis-4.0.1
/usr/local/php-fpm/bin/phpize
#生成一个configure编译文件
./configure  --with-php-config=/usr/local/php-fpm/bin/php-config
make  && make install
#添加redis扩展
find  / -name  php.ini
vim /usr/local/php-fpm/etc/php.ini
extension=/usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20160303/redis.so
php -m | grep redis
redis(红色显示)
#重启php服务
/usr/local/php-fpm/sbin/php-fpm -t

存储型session

#vim  /etc/redis.conf
session.save_handler = "redis" 
session.save_path = "tcp://127.0.0.1:6379" 
#或者,apache主机
php_value session.save_handler " redis" 
php_value session.save_path " tcp://127.0.0.1:6379" 
#或者  php-fpm配置文件对应的pool中增加:
php_value[session.save_handler] = redis
php_value[session.save_path] = " tcp://127.0.0.1:6379 "
#session.php代码内容
<?php
    session_start();
    $_SESSION['name']='test';    
    echo session_id()."<br/>";        
    echo $_SESSION['name'];
?>
#获取session值
curl  127.0.0.1/session.php

php中使用redis(yum)

yum list | grep redis
yum install php-pecl-redis -y
php -m|grep redis
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K.A.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值