redis常用操作

redis常用操作

重复写入值会将之前的值覆盖:

127.0.0.1:6379> set key1 aming
OK
127.0.0.1:6379> set key1 zhangfei
OK
127.0.0.1:6379> get key1
"zhangfei"

检测value有没有值,没有就赋值:

127.0.0.1:6379> SETNX key1 aaa
(integer) 0        //0表示value存在不覆盖,与1相反

给key设置过期时间:

127.0.0.1:6379> set key3 aaa ex 10
OK

先设定过期时间然后再赋值:

127.0.0.1:6379> get key3
"bbb"

从左侧加入一个元素:

127.0.0.1:6379> LPUSH list2 aaa
(integer) 1
127.0.0.1:6379> LPUSH list2 bbb
(integer) 2
127.0.0.1:6379> LPUSH list2 0 -1
(integer) 4
127.0.0.1:6379> LRANGE list2 0 -1    //先加入到在后面
1) "bbb"
2) "aaa"

从上面取出一个元素:

127.0.0.1:6379> LPOP list2
"bbb"
127.0.0.1:6379> LPUSH list2 ccc
(integer) 2
127.0.0.1:6379> LPUSH list2 ddd
(integer) 3
127.0.0.1:6379> LRANGE list2 0 -1
1) "ddd"
2) "ccc"
3) "aaa"

从下面取出一个元素:

127.0.0.1:6379> RPOP list2
"aaa"

再元素后插入新元素:

127.0.0.1:6379> LINSERT list2 AFTER ccc aaa
(integer) 3
127.0.0.1:6379> LINSERT list2 AFTER aaa bbb
(integer) 4
127.0.0.1:6379> LRANGE list2 0 -1
1) "ddd"
2) "ccc"
3) "aaa"
4) "bbb"

修改元素:

127.0.0.1:6379> LSET list2 1 111        //1表示第2个
OK
127.0.0.1:6379> LRANGE list2 0 -1
1) "ddd"
2) "111"
3) "aaa"
4) "bbb"

查看链表中第几个元素:

127.0.0.1:6379> LINDEX list2 1
"111"
127.0.0.1:6379> LINDEX list2 0
"ddd"

查看链表中有几个元素:

127.0.0.1:6379> LLEN list2
(integer) 4

redis常用操作

向集合放入元素:

127.0.0.1:6379> SADD seta aaa
(integer) 1
127.0.0.1:6379> SADD seta bbb
(integer) 1
127.0.0.1:6379> SMEMBERS seta
1) "bbb"
2) "aaa"

删除元素:

127.0.0.1:6379> SREM seta aaa
(integer) 1
127.0.0.1:6379> SMEMBERS seta
1) "bbb"

随机取出一个元素,删除:

127.0.0.1:6379> SPOP seta
"bbb"
127.0.0.1:6379> SMEMBERS seta
(empty list or set)
127.0.0.1:6379> SADD seta aaa
(integer) 1
127.0.0.1:6379> SADD seta bbb
(integer) 1
127.0.0.1:6379> SADD seta ccc
(integer) 1
127.0.0.1:6379> SADD seta 111
(integer) 1
127.0.0.1:6379> SADD setb 111
(integer) 1
127.0.0.1:6379> SADD setb 222
(integer) 1
127.0.0.1:6379> SADD setb aaa
(integer) 1
127.0.0.1:6379> SMEMBERS seta
1) "111"
2) "bbb"
3) "ccc"
4) "aaa"
127.0.0.1:6379> SMEMBERS setb
1) "111"
2) "222"
3) "aaa"

求差集:

127.0.0.1:6379> SDIFF seta setb
1) "bbb"
2) "ccc"
127.0.0.1:6379> SDIFF setb seta
1) "222"            //求差集以前面的为标准

求交集:

127.0.0.1:6379> SINTER seta setb
1) "111"
2) "aaa"

求并集:

127.0.0.1:6379> SUNION seta setb
1) "aaa"
2) "111"
3) "bbb"
4) "222"
5) "ccc"

判断一个元素是否属于一个集合:

127.0.0.1:6379> SISMEMBER seta 111
(integer) 1
  • sunionstore sete seta setb //求并集并存储到sete
  • srandmember seta //随机取出一个元素,但不删除
  • zadd zseta 11 123 //创建有序集合
  • zrange zseta 0 -1 //显示所有元素,按顺序显示
  • zrange zseta 0 -1 withscores //可以带上分值
  • zrem zseta 222 //删除指定元素
  • zrank zseta 222 //返回元素的索引值,索引值从0开始,按score正向排序
  • zrevrank zseta 222 //同上,不同的是,按score反序排序 zrevrange zseta 0 -1 反序显示所有元素,并带分值
  • zcard zseta //返回集合中所有元素的个数
  • zcount zseta 1 10 // 返回分值范围1-10的元素个数
  • zrangebyscore zseta 1 10 // 返回分值范围1-10的元素
  • zremrangebyrank zseta 0 2 //删除索引范围0-2的元素,按score正向排序
  • zremrangebyscore zseta 1 10 //删除分值范围1-10的元素

redis常用操作

创建有序集合:

127.0.0.1:6379> ZADD zseta 11 123
(integer) 1
127.0.0.1:6379> ZADD zseta 0 1ab
(integer) 1
127.0.0.1:6379> ZRANGE zseta 0 -1        //显示所有元素,按顺序显示
1) "1ab"
2) "123"

删除元素:

127.0.0.1:6379> ZREM zseta 1ab
(integer) 1
127.0.0.1:6379> ZRANGE zseta 0 -1
1) "123"

返回元素的索引值,索引值从0开始,按score正向排序:

127.0.0.1:6379> ZADD zseta 10 1ab
(integer) 1
127.0.0.1:6379> ZADD zseta 14 sssab
(integer) 1
127.0.0.1:6379> ZADD zseta 16 12121212
(integer) 1
127.0.0.1:6379> ZADD zseta 1000 asdasdf212
(integer) 1
127.0.0.1:6379> ZRANGE zseta 0 -1
1) "1ab"
2) "123"
3) "sssab"
4) "12121212"
5) "asdasdf212"
127.0.0.1:6379> ZRANK zseta sssab
(integer) 2
127.0.0.1:6379> ZRANK zseta 1ab
(integer) 0
127.0.0.1:6379> ZRANK zseta 12121212
(integer) 3
127.0.0.1:6379> ZREVRANK zseta 12121212        //同上,不同的是,按score反序排序
(integer) 1
127.0.0.1:6379> ZREVRANGE zseta 0 -1    //反序显示所有元素,并带分值
1) "asdasdf212"
2) "12121212"
3) "sssab"
4) "123"
5) "1ab"

返回集合中所有元素的个数:

127.0.0.1:6379> ZCARD zseta
(integer) 5
127.0.0.1:6379> ZCOUNT zseta 50 1000
(integer) 1
127.0.0.1:6379> ZCOUNT zseta 10 1000
(integer) 5
127.0.0.1:6379> ZCOUNT zseta 10 10
(integer) 1
127.0.0.1:6379> ZCOUNT zseta 10 19
(integer) 4

返回分值范围的元素:

127.0.0.1:6379> ZRANGEBYSCORE zseta 10 19
1) "1ab"
2) "123"
3) "sssab"
4) "12121212"
127.0.0.1:6379> ZRANGEBYSCORE zseta 10 14
1) "1ab"
2) "123"
3) "sssab"

删除分值范围的元素:

(error) ERR wrong number of arguments for 'zremrangebyscore' command
127.0.0.1:6379> ZREMRANGEBYSCORE zseta 10 11
(integer) 2

删除索引范围0-2的元素,按score正向排序:

127.0.0.1:6379> ZREMRANGEBYRANK zseta 0 1
(integer) 2
127.0.0.1:6379> ZREVRANGE zseta 0 -1
1) "asdasdf212"
  • hset user1 name aming //建立hash
  • hset user1 age 30
  • hset user1 job it
  • hgetall user1
  • hmset user2 name aming age 30 job it //批量建立键值对
  • hmget user2
  • hmget user2 name age job
  • hdel user2 job //删除指定filed
  • hkeys user2 //打印所有的key
  • hvals user2 //打印所有的values
  • hlen user2 //查看hash有几个filed

建立hash:

127.0.0.1:6379> HMSET hash2 a 1 b 2 c 3 d 4
OK
127.0.0.1:6379> HGETALL hash2
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
7) "d"
8) "4"

删除指定区域:

127.0.0.1:6379> HDEL hash2 b
(integer) 1
127.0.0.1:6379> HGETALL hash2
1) "a"
2) "1"
3) "c"
4) "3"
5) "d"
6) "4"

打印所有的key:

127.0.0.1:6379> HKEYS hash2
1) "a"
2) "c"
3) "d"
127.0.0.1:6379>

打印所有的值:

127.0.0.1:6379> HVALS hash2
1) "1"
2) "3"
3) "4"

查看hash有几个:

127.0.0.1:6379> HLEN hash2
(integer) 3

redis操作键值

  • keys * //取出所有key
  • keys my* //模糊匹配
  • exists name //有name键 返回1 ,否则返回0;
  • del key1 // 删除一个key //成功返回1 ,否则返回0;
  • EXPIRE key1 100 //设置key1 100s后过期
  • ttl key // 查看键 还有多长时间过期,单位是s,当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,返回 key 的剩余生存时间。
  • select 0 //代表选择当前数据库,默认进入0 数据库
  • move age 1 // 把age 移动到1 数据库
  • persist key1 //取消key1的过期时间
  • randomkey //随机返回一个key
  • rename oldname newname //重命名key
  • type key1 //返回键的类型

取出所有的key:

127.0.0.1:6379> keys *
1) "k2"
2) "hash2"
3) "seta"
4) "mykey"
5) "list2"
6) "setb"
7) "key1"
8) "list"
9) "list1"
10) "set1"
11) "k1"
12) "set3"
13) "set2"
14) "hash1"
15) "k3"
16) "zseta"

模糊匹配:

127.0.0.1:6379> keys k*
1) "k2"
2) "key1"
3) "k1"
4) "k3"

判断键是否存在:

127.0.0.1:6379> EXISTS key1
(integer) 1

删除键:

127.0.0.1:6379> DEL key1
(integer) 1

设定过期时间:

127.0.0.1:6379> EXPIRE k2 10
(integer) 1

选择数据库:

127.0.0.1:6379> select 0        //默认就是0
OK

移动键:

127.0.0.1:6379> MOVE set2 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "set2"

取消key过期时间:

127.0.0.1:6379> EXPIRE mykey 1000
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) 994
127.0.0.1:6379> PERSIST mykey
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) -1

改名:

127.0.0.1:6379> RENAME setb set3
OK

查看类型:

127.0.0.1:6379> type seta
set
127.0.0.1:6379> type zseta
zset
  • dbsize //返回当前数据库中key的数目
  • info //返回redis数据库状态信息
  • flushdb //清空当前数据库中所有的键
  • flushall //清空所有数据库中的所有的key
  • bgsave //保存数据到 rdb文件中,在后台运行
  • save //作用同上,但是在前台运行
  • config get * //获取所有配置参数
  • config get dir //获取配置参数
  • config set dir //更改配置参数
  • 数据恢复: 首先定义或者确定dir目录和dbfilename,然后把备份的rdb文件放到dir目录下面,重启redis服务即可恢复数据
127.0.0.1:6379> DBSIZE
(integer) 12
127.0.0.1:6379> CONFIG GET bind
1) "bind"
2) "127.0.0.1"

redis安全设置

设置密码:

[root@zhangfei ~]# vim /etc/redis.conf

加入一行:

requirepass aming>com

重启redis:

[root@zhangfei ~]# killall redis-server
[root@zhangfei ~]# redis-server /etc/redis.conf
[root@zhangfei ~]# redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

登陆报错,因为设置了密码

[root@zhangfei ~]# redis-cli -a 'aming>com'        //因为有>所以需要单引号
127.0.0.1:6379> keys *
1) "hash1"
2) "list1"
3) "seta"
4) "set1"
5) "hash2"
6) "k1"
7) "mykey"
8) "zseta"
9) "list"
10) "list2"
11) "set3"
12) "k3"

更改config名称:

[root@zhangfei ~]# vim /etc/redis.conf

新增 rename-command CONFIG aming

[root@zhangfei ~]# killall redis-server
[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慢查询日志

修改配置文件:

[root@zhangfei ~]# vim /etc/redis.conf
slowlog-log-slower-than 1000 //单位ms,表示慢于1000ms则记录日志 
slowlog-max-len 128  //定义日志长度,表示最多存128条

指令:

slowlog get //列出所有的慢查询日志 
slowlog get 2 //只列出2条 
slowlog len //查看慢查询日志条数

为了演示,修改配置文件:

将slowlog-log-slower-than 10000
改成
slowlog-log-slower-than 10
[root@zhangfei ~]# killall redis-server
[root@zhangfei ~]# redis-server /etc/redis.conf
[root@zhangfei ~]# killall redis-server
[root@zhangfei ~]# redis-server /etc/redis.conf
[root@zhangfei ~]# redis-cli -a 'aming>com'
127.0.0.1:6379> SLOWLOG get
1) 1) (integer) 0
   2) (integer) 1507909080
   3) (integer) 655
   4) 1) "COMMAND"
   5) "127.0.0.1:36898"
   6) ""
127.0.0.1:6379> keys *
1) "k1"
2) "hash1"
3) "list1"
4) "mykey"
5) "set3"
6) "list2"
7) "hash2"
8) "set1"
9) "list"
10) "k3"
11) "zseta"
12) "seta"
127.0.0.1:6379> get key3
(nil)
127.0.0.1:6379> SLOWLOG get
1) 1) (integer) 3
   2) (integer) 1507909182
   3) (integer) 17
   4) 1) "get"
      2) "key3"
   5) "127.0.0.1:36898"
   6) ""
2) 1) (integer) 2
   2) (integer) 1507909177
   3) (integer) 32
   4) 1) "keys"
      2) "*"
   5) "127.0.0.1:36898"
   6) ""
3) 1) (integer) 1
   2) (integer) 1507909104
   3) (integer) 25
   4) 1) "SLOWLOG"
      2) "get"
   5) "127.0.0.1:36898"
   6) ""
4) 1) (integer) 0
   2) (integer) 1507909080
   3) (integer) 655
   4) 1) "COMMAND"
   5) "127.0.0.1:36898"
   6) ""

php安装redis扩展模块

下载安装包:

[root@zhangfei ~]# cd /usr/local/src/
[root@zhangfei src]# wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip
[root@zhangfei src]# unzip phpredis.zip
[root@zhangfei phpredis-develop]# /usr/local/php-fpm/bin/phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@zhangfei phpredis-develop]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config
[root@zhangfei phpredis-develop]# make
[root@zhangfei phpredis-develop]# make install
[root@zhangfei phpredis-develop]# vim /usr/local/php-fpm/etc/php.ini
extension=memcache.so
extension=redis.so

检查扩展:

[root@zhangfei phpredis-develop]# /usr/local/php-fpm/bin/php -m
[PHP Modules]
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mcrypt
memcache
mysql
mysqli
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
redis
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
[Zend Modules]

有redis模块

重启服务才能生效:

[root@zhangfei phpredis-develop]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done

redis存储session

把php的session存到redis中:

[root@zhangfei ~]# vim /usr/local/php-fpm/etc/php-fpm.d/aming.conf
后面加上
php_value[session.save_handler] = redis
php_value[session.save_path] = " tcp://127.0.0.1:6379"
[root@zhangfei ~]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done

为了方便测试,我们把密码关掉:

[root@zhangfei ~]# vim /etc/redis.conf
将
activerehashing yes
改成
#activerehashing yes
[root@zhangfei ~]# killall redis-server
[root@zhangfei ~]# redis-server /etc/redis.conf

测试:

  • wgt http://study.lishiming.net/.mem_se.txt mv .mem_se.txt /usr/local/apache2/htdocs/session.php
  • 其中session.php内容可以参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php
  • curl localhost/session.php //结果类似于1443702394

    1443702394

    i44nunao0g3o7vf2su0hnc5440
  • 命令行连接redis,也可以查看到该key以及对应的值
  • 如果想用php连接redis cluster,需要使用predis扩展
  • 安装方法类似phpredis,predis扩展地址https://github.com/nrk/predis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值