Redis简介
官方网站:https://redis.io/
中文网站:http://www.redis.cn/
下载地址:http://download.redis.io/releases/redis-5.0.5.tar.gz
(一)Redis安装配置
一、环境准备
独配置一台单独的CentOS虚拟机,并配置好网络。
二、安装配置
(1)安装wget
yum install wget |
(2)创建一个软件下载目录并下载redis安装包(也可以下载好redis安装包上传到服务器中)
cd ~ mkdir soft cd soft wget http://download.redis.io/releases/redis-5.0.5.tar.gz |
(3)解压redis安装包
tar xf redis-5.0.5.tar.gz |
(4)进入redis-src目录,浏览安装文件,查看编译、安装、使用等帮助
cd redis-src cat README.md |
(5)在redis-src目录,编译redis
make #如编译出错时,需在线安装需要的cc编译器环境 yum install gcc(离线安装gcc请参考Linux环境搭建相关章节) #清除编译出错的文件,如果编译没有出错可忽略此步骤 make distclean #重新编译,编译完成后在src目录生成了可执行文件,可以运行redis-server和redis-cli使用,但建议还是应该将redis作为服务进行安装 make |
(6)安装redis服务,安装完成后会在安装目录下/bin文件下生成启动文件
make install PREFIX=/opt/redis5 |
(7)配置redis环境变量
vi /etc/profile export REDIS_HOME=/opt/redis5 export PATH=$PATH:$REDIS_HOME/bin source /etc/profile echo $PATH #验证环境变量是否配置成功 |
(8)进入utils目录,安装redis服务,注意一个物理机可以跑多个redis服务
cd /root/soft/redis-5.0.5/utils ./install_server.sh #可以执行一次或多次,每次都会创建一个redis实例 #这里注意: a) 一个物理机中可以有多个redis实例(进程),通过port区分 b) 可执行程序就一份在/opt/redis5/bin目录,但是内存中未来的多个实例需要各自的配置文件,持久化目录等资源 c) service redis_6379 start/stop/stauts > linux /etc/init.d/**** d) 脚本还会帮你启动! |
(9)查看redis服务
ps -ef|grep redis |
(10)启动、停止、查看服务
service redis_6379 start/stop/stauts |
(11)启动命令行客户端,使用redis
redis-cli #启动后,默认连接6379端口 redis-cli --help #查看客户端帮助 redis-cli -p 端口号 #连接其他实例的端口 redis-cli -p 端口号 -n 库编号 #连接第n号库,redis默认有16个库 redis-cli --raw #启动客户端,并触发编码集格式化,可显示中文 |
(二)Redis的简单使用
进入客户端后使用help命令可查询使用帮助。
- help @<group>,可查询某个分组的帮助,如:help @string
- help <common>,可查询具体某个命令的帮助,如:help set;
- help <tab>,按tab键可以切换、补全;
- quit,退出客户端命令行
一、通用组
help @generic #查询通用组命令 keys * #列出所有已经建立的key FLUSHALL #清库命令,删除所有现有的数据库 FLUSHDB #清库命令,在某个db环境下执行,只删除当前db的数据 TYPE key #查看key对应的value的类型 OBJECT encoding key #查看key对应的value的编码 |
二、string
help @string #查询stirng类型命令
(1)字符串操作指令
#设置单个key的value; #NX:表示key不存在时设置,只能新建 #XX:表示存在时设置,只能更新。 SET key value [expiration EX seconds|PX milliseconds] [NX|XX] #取出单个key的value GET key #设置多个key的value MSET key value [key value ...] #取出多个key的value MGET key [key ...] #追加key的value APPEND key value #可以覆盖value的某一个位置的值 #offset 偏移量的位置,下标从0开始 #value 新的值 SETRANGE key offset value #取value某一部分的范围值 #start:表示字符value的下标起始值,从0开始 #end:表示字符value的下标结束值,-1为所有 GETRANGE key start end #取出老的值,设置新的值 GETSET key value #获取字符串的长度 STRLEN key #当key不存时,才可以为多个key设置各自的值(只要有一个key存在,所有的key都会设置失败) MSETNX key value [key value ...] #以毫秒为单位设置key的生存时间 PSETEX key milliseconds value |
(2)数值操作指令
#将键的整数值加1 INCR key #将键的整数值减1 DECR key #将键的整数值增加给定的值 INCRBY key increment #将键的整数值减少给定的值 DECRBY key decrement #将键的浮点值增加给定的值 INCRBYFLOAT key increment 数值应用场景:抢购、秒杀、详情页面、点赞、评论数、好友数、规避并发 |
(3)bitmap(二进制位)操作指令
#设置或清除存储在键上的字符串值中偏移的位,这里offset指二进制位数 SETBIT key offset value #value只能是0或者1 #例如: setbit k1 1 1:结果为@:0100 0000 setbit k1 7 1:结果为A:0100 0001 setbit k1 9 1:结果为A@:0100 0001 0100 0000 setbit k2 6 1:结果为B:0100 0010 #寻找第一个二进制位(0或1)在字符串二进制位中的位置 #bit要么0要么1 #start、end指字节的开始和结束位置,即字节的索引 BITPOS key bit [start] [end] #例如: bitpos k1 1 0 0:结果为1:1出现在k1第一个字节中的位置 bitpos k1 1 1 1:结果为9:1出现在k1第二个字节中的位置 bitpos k1 0 0 1:结果为0:0出现在k1第一、二个字节中的位置 #找到一定范围内1出现的次数 #count只count1 #start、end指字节的开始和结束位置 BITCOUNT key [start] [end] #例如: bitcount k1 0 1:结果为3:1出现了3次(0100 0001 0100 0000) #所有参与的key会触发一个二进制操作(与或非) #destkey目标key #key [key …]参与的key BITOP operation destkey key [key …] #例如: mset k1 A k2 B bitop and k3 k1 k2:结果为k3=@(由k1和k2按照二进制与操作计算得到) bitop or k4 k1 k2:结果为k4=C(由k1和k2按照二进制或操作计算得到) bitmap应用场景:
setbit sean 1 1 setbit sean 7 1 setbit sean 364 1 strlen sean bitcount sean -2 -1(统计sean登录次数)
setbit 20190101 1 1(张三在1号登录) setbit 20190102 1 1(张三在2号登录) setbit 20190102 7 1(李四在2号登录) bitop or destkey 20190101 20190102(将2天的登录数据进行或运算,去重) bitcount destkey 0 -1(统计2天之内的登录用户数) |
#往列表list左边添加多个值 LPUSH key value [value ...] #往列表list右边添加多个值 RPUSH key value [value ...] #移除并获取列表中的第一个元素 LPOP key #移除并获取列表中的最后一个元素 RPOP key #根据范围获取列表中的值 LRANGE key start stop #根据下标值获取列表中的元素,下标从0开始,为-1时表示最后一个元素 LINDEX key index #根据下标值设置列表中元素,下标从0开始,为-1时表示最后一个元素 LSET key index value |