**
一.常用操作
**
redis value值类型:string,list,set,sorted set,hsah。
- set命令:没有增加,有则覆盖
127.0.0.1:6379> set key1 ligen
OK
127.0.0.1:6379> get key1
"ligen"
127.0.0.1:6379> set key1 li
OK
127.0.0.1:6379> get key1
"li"
- setnx命令:
查询是否存在,存在返回0,不存在则创建。
127.0.0.1:6379> SETNX key1 2
(integer) 0
127.0.0.1:6379> get key1
"li"
127.0.0.1:6379> setnx key2 22
(integer) 1
127.0.0.1:6379> get key2
"22"
- setex:
设置过期时间,若key已经存在,会覆盖新的值:
127.0.0.1:6379> setex key2 10 6 #过期时间10s
OK
127.0.0.1:6379> get key2
"6"
127.0.0.1:6379> get key2
(nil)
- mset :设置一个或多个值对
127.0.0.1:6379> mset k1 1 k2 2 k3 3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "1"
2) "2"
3) "3"
- lpush:从左边开始插入元素,若再次加入,不会覆盖,而是添加
127.0.0.1:6379> lpush list1 aaa bbb
(integer) 2
127.0.0.1:6379> LRANGE list1 0 -1
1) "bbb"
2) "aaa"
- lpop:从左侧取出第一个元素:
127.0.0.1:6379> LPOP list1
"bbb"
127.0.0.1:6379> LRANGE list1 0 -1
1) "aaa"
- rpop:从右边开始取出元素:
127.0.0.1:6379> lpush list1 11 22 33 44 55
(integer) 6
127.0.0.1:6379> LRANGE list1 0 -1
1) "55"
2) "44"
3) "33"
4) "22"
5) "11"
6) "aaa"
127.0.0.1:6379> rpop list1
"aaa"
- linsert:插入
127.0.0.1:6379> LINSERT list1 before 55 00
(integer) 6
127.0.0.1:6379> LRANGE list1 0 -1
1) "00"
2) "55"
3) "44"
4) "33"
5) "22"
6) "11"
127.0.0.1:6379> LINSERT list1 after 00 000
(integer) 7
127.0.0.1:6379> LRANGE list1 0 -1
1) "00"
2) "000"
3) "55"
4) "44"
5) "33"
6) "22"
7) "11"
- lset 修改:
127.0.0.1:6379> lset list1 0 0
OK
127.0.0.1:6379> LRANGE list1 0 -1
1) "0"
2) "000"
3) "55"
4) "44"
5) "33"
6) "22"
7) "11"
- lindex :查询某下标对应的值
127.0.0.1:6379> LINDEX list1 4
"33"
- llen:查询列表有多少个值:
127.0.0.1:6379> LLEN list1
(integer) 7
集合:
- sadd :想集合中加入元素
127.0.0.1:6379> sadd set1 aaa bbb ccc
(integer) 3
- smember:查询集合元素
127.0.0.1:6379> SMEMBERS set1
1) "ccc"
2) "bbb"
3) "aaa"
- srem:删除集合中的元素
127.0.0.1:6379> srem set1 aaa bbb
(integer) 2
127.0.0.1:6379> SMEMBERS set1
1) "ccc"
- spop:随机取出一个元素
127.0.0.1:6379> sadd set1 eee fff ooo
(integer) 3
127.0.0.1:6379> SMEMBERS set1
1) "ooo"
2) "ccc"
3) "fff"
4) "eee"
127.0.0.1:6379> spop set1
"ccc"
- sdiff:求差集,以前面一个集合为标准
127.0.0.1:6379> SMEMBERS set2
1) "ooo"
2) "bbb"
3) "r"
4) "yyy"
5) "dd"
6) "d"
7) "a"
8) "aaa"
127.0.0.1:6379> SMEMBERS set1
1) "ooo"
2) "fff"
3) "eee"
127.0.0.1:6379> SDIFF set1 set2
1) "fff"
2) "eee"
- sdiffstore:求差集并且存储
127.0.0.1:6379> SDIFFstore set3 set1 set2
(integer) 2
127.0.0.1:6379> SMEMBERS set3
1) "fff"
2) "eee"
- sinter:求交集
127.0.0.1:6379> SINTER set1 set2
1) "ooo"
- sinterstore:求交集并存储,同sdiffstore。
- sunion:求并集,同sinter。
- sunionstore:同sinterstore。
有序集合:
- zadd:创建有序集合
127.0.0.1:6379> zadd zset1 1 aaa 33 ccc 2 c
(integer) 3
- zrange:查看,按scores排列。
127.0.0.1:6379> ZRANGE zset1 0 -1
1) "aaa"
2) "c"
3) "ccc"
- zrange,带上-withscores:可以查询scores:
127.0.0.1:6379> ZRANGE zset1 0 -1 withscores
1) "aaa"
2) "1"
3) "c"
4) "2"
5) "ccc"
6) "33"
- zrem:删除元素
127.0.0.1:6379> zrem zset1 c
(integer) 1
- zrank:返回元素的索引值
127.0.0.1:6379> zrank zset1 aaa
(integer) 0
- zrevrank:同上,按score反向排序查询。
127.0.0.1:6379> zrevrank zset1 aaa
(integer) 1
- zcore:返回集合中所有元素的个数
127.0.0.1:6379> zcard zset1
(integer) 2
- zcount:返回分值范围的元素个数:
127.0.0.1:6379> zcount zset1 1 10
(integer) 1
- zrangebyscore:返回分值范围1-10的元素值
127.0.0.1:6379> ZRANGEBYSCORE zset1 0 40
1) "aaa"
2) "ccc"
- zremrangebyscore:删除sroce范围内的元素
127.0.0.1:6379> ZRANGEBYSCORE zset1 1 10
1) "aaa"
zremrangebyrank:删除索引范围内的元素
127.0.0.1:6379> ZREMRANGEBYRANK zset1 1 40
(integer) 1
hash
- hget:创建hash
127.0.0.1:6379> hset hash1 age 20
(integer) 1
- hmget:创建多个
127.0.0.1:6379> hmset hash2 aa 11 bb 22
OK
- hdel:删除指定的filed
127.0.0.1:6379> hdel hash2 aa
(integer) 1
127.0.0.1:6379> hgetall hash2
1) "bb"
2) "22"
- hkeys打印所有key,hvals打印所有的values:
127.0.0.1:6379> hkeys hash2
1) "bb"
127.0.0.1:6379> hvals hash2
1) "22"
**
redis操作键值
查询所有keys:
keys *
模糊匹配:
127.0.0.1:6379> keys zs*
1) "zset1"
查询是否存在key:
- exists,存在返回1,不存在0
127.0.0.1:6379> EXISTS zset1
(integer) 1
删除keys:
127.0.0.1:6379> del zset1
(integer) 1
127.0.0.1:6379> EXISTS zset1
(integer) 0
设置过期时间和查询:
- expire和ttl,-2表示过期,-1表示永远不过期
127.0.0.1:6379> EXPIRE set3 100
(integer) 1
127.0.0.1:6379> ttl set3
(integer) 94
选择数据库:
- select,默认为0
127.0.0.1:6379> select 1
OK
把keys移动到其他库:
- move
127.0.0.1:6379> move k2 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "k2"
2) "hash1"
取消过期时间:
- persist
127.0.0.1:6379[1]> PERSIST k2
(integer) 0
随机返回一个key:
- randomkey
127.0.0.1:6379[1]> RANDOMKEY
"hash1"
重命名一个key:
- rename
127.0.0.1:6379> rename k3 k1
OK
查看键的类型:
- type
127.0.0.1:6379> type k1
string
返回keys数目:
- dbsize
127.0.0.1:6379> DBSIZE
(integer) 6
返回redis数据库状态信息:
info
清空当前数据库所有的键:
- flushdb
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
清空左右数据库中的所有key:
flushall
保存数据到rdb文件中,在后台运行:
bgsave #save是在前台运行
获取所有配置参数:
config get *
config get dir #获取某个配置参数
config set dir #更改参数
关闭redis:
redis-cli shutdown
启动:
redis-server /etc/redis.conf
**
二.安全设置
**
编辑配置文件
vim /etc/redis.conf
- 设置密码
requirepass 123457 #123457为自己修改的密码
登入:
redis-cli -a '123457'
- 修改端口port:
port 6379 #可以改成自己的
- 将config命令改名:
# rename-command CONFIG "" #把#去掉,双引号里填写自己改的名字,若是只把#号去掉,表示禁用config
**
三.redis慢查询日志
**
关于慢查询日志的参数:
lowlog-log-slower-than 10000 #执行时长,单位微秒。
slowlog-max-len 128 #日志长度多少条,超过128将删除最老的日志
查询慢日志,只能用命令行的形式查看:
127.0.0.1:6379> SLOWLOG get
127.0.0.1:6379> SLOWLOG get 1 #查看最新的一条
127.0.0.1:6379> SLOWLOG len #查看条数
存储session:
在php-fpm配置文件对应的pool中增加:
php_value[session.save_handler]=redis
php_value[session.save_path]="tcp://127.0.0.1:6379"