Redis常用命令大集合(快速入门)
Posted 黑taoA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis常用命令大集合(快速入门)相关的知识,希望对你有一定的参考价值。
Redis
一、介绍
程序是用来处理数据的,Redis是用来存储数据的,程序处理完的数据要存储在Redis中,不同特点的数据要存储在Redis中不同类型的数据结构中。
数据在没有存到Redis之前存在内存中。
二、Redis的五种数据类型以及操作命令
-
Redis的key的操作命令
-
keys
语法:keys pattern
作用:查找所有符合模式pattern的key。pattern可以使用通配符。
通配符:*(匹配0到多个字符),?(匹配一个字符),[](匹配括号中的一个字符)
实例:
-
exists:判断key是否存在于数据库中
语法:exists key ;判断1个key是否存在,存在返回1,不存在返回0。
exists key [key key ...];判断多个key是否存在,返回存在的个数。
实例:
-
move:移动指定的key到指定的数据库实例(Redis默认有16个库),用户默认使用第0个库
语法:move key index
实例:
-
ttl:查看key的剩余生存时间
语法:ttl key ;返回值:-1:没有设置生存时间;-2:该key不存在
实例:
-
expire:设置key的最大生存时间
语法:expire key seconds
实例:
-
type:查看指定key的数据类型
语法:type key
实例:
-
rename:重命名指定key
语法:rename key newkey
实例:
-
del:删除指定key和value
语法:del key:删除一个key,
del key [key key ...]:删除多个key
返回值:删除实际删除数据条数
实例
-
decrby:减去指定值
语法:decrby key num
-
incrby:增加指定值
语法:incrby key num
-
-
字符串类型:string(key-value)
-
添加数据:set key value;(如果key以存在,之前的value将会被覆盖)
-
获取指定key的值:get key;
-
追加字符串:append key value;返回字符串长度;(如果key不存在,则存储为新的key)
-
获取字符串长度:strlen key;
-
将value数值加一:incr key;返回计算后的值;(如果该值不是数值,将报错;如果key不存在,则自动存储新的key,并初始化为0,然后加一);
-
将value数值减一:decr key;用法同上;
-
将value数值加某一具体值:incrby key increment;
-
将value数值减某一具体值:decrby key increment;
-
闭区间截取字符串中的某一段:getrange key startIndex endIndex;(下标从0开始,最后一个字符的下标为-1或字符串长度减1)
-
用新的value覆盖从某一下标开始的字符串:setrange key offset value;
-
添加新的数据并同时设置生命周期:setex key seconds value;
-
当key值不存在时添加数据:setnx key value;key值不存在时添加,返回结果1;key值已存在不添加,返回结果0;
-
批量添加新的数据:mset key1 value1 key2 value2 key3 value3(中间使用空格隔开)
-
批量获取数据:mget key1 key2 key3 (中间使用空格隔开)
-
批量添加key不存在的数据:msetnx key1 value1 key2 value2...(所有key都不存在设置成功,只要有一个存在设置失败)
-
-
列表类型:list(key:value1 value2...)有序可重复列表
-
将一个或多个值依次插入列表的表头:lpush key value1 value2 ...(若该key已存在,将新值追加在原来的列表中)(l:left)
-
获取列表中指定下标区间的元素:lrange key startIndex endIndex
-
将一个或多个值依次插入列表的表尾:rpush key value1 value2 ...(若该key已存在,将新值追加在原来的列表中)(r:right)
-
删除指定列表的表头元素并返回:lpop key;
-
删除指定列表的表尾元素并返回:rpop key;
-
获取指定列表中指定下标的元素并返回:lindex key index
-
获取指定列表的长度:llen key
-
根据count的值移除列表中的指定的某一些元素:lrem key count value(count>0:从表头开始数前n个;count<0:从表尾开始数前n个;count=0:移除所有跟value相同的元素)【n=count】
-
-
集合类型:set(key:member1 member2...)value无序,并且不能重复
-
将一个或多个元素添加到指定的集合中:sadd key member1 member2...
-
获取指定集合中的所有元素:smembers key
-
判断指定元素在指定集合中是否存在:sismember key member; 存在返回1,不存在返回0;
-
获取指定集合的长度:scard key
-
移除指定集合中一个或者多个元素:srem key member1 member2...(不存的元素会忽略)
-
随机获取指定集合中的n个元素:srandmember key [count];(count不指定,默认为1;count>0:随机获取的数不重复,count<0:随机获取的数可能重复)
-
从指定集合中随机移除一个或者多个元素:spop key [count](count不指定,默认为1);
-
从指定集合中移动指定一个元素到另一个集合中:smove source destination member;
-
返回差集(一个集合中有,其他集合没有):sdiff key key...
-
返回交集(两个集合共同存在的值):sinter key1 key2...
-
返回并集(两个集合所有值):sunion key1 key2...
-
-
双列集合:hash(单key:filed-value filed-value...)
-
将一个或多个键值对存储到指定集合中:hset key filed value ...
-
获取hash表中指定的filed值:hget key filed;
-
批量获取hash表中指定的filed值:hmget key filed1 filed2...;
-
获取指定hash表中的所有filed和value:hgetall key;
-
删除指定hash表中的一个或者多个filed:hdel key filed1 filed2...
-
获取指定hash表中所有的filed的个数:hlen key
-
判断指定hash表中指定的filed是否存在:hexists key filed
-
获取指定hash表中所有filed的列表:hkeys key;
-
获取指定hash表中所有value的值:hvals key;
-
-
有序单列集合:zset()value会根据关联的分数进行排序,不能重复
-
将一个或者多个member及score加入有序集合:zadd key score1 member1 score2 member2 ...
-
根据指定集合获取指定区间的元素:zrange key startindex endindex
-
根据指定分数区间获取元素:zrangebyscore key min max
-
删除指定集合中一个或多个指定元素:zrem key member1 member2...
-
获取集合中元素的个数:zcard key
-
获取指定元素的排名:zrank key member(排名从0开始) zrevrank(倒叙排名:从大到小)
-
获取指定集合中在指定分数区间的元素个数:zcount key min max
-
获取指定集合中的指定元素的分数:zscore key member
-
三、回顾Redis的配置文件
-
可以在redis.conf中修改配置文件,若使用配置文件中的参数,启动Redis的时候要选择使用配置文件启动,否则使用默认配置启动。(redis-server redis.conf &)
-
port:启动端口,默认6379;
-
bind:客户端连接使用IP,默认本地主机的任意一个IP
-
-
常规配置:
-
loglevel:配置日志级别:开发阶段配置debug,上线阶段配置notice和warning
-
logfile:指定日志文件。使得日志信息输出到指定文件中。
-
databases:配置Redis服务默认创建的数据库实例个数,默认值为16;
-
-
安全配置:(高效性,默认不用密码)
-
requirepass:配置Redis的访问密码,默认不配置密码,即访问不需要密码验证。此配置项需要在protected-mode-yes时起作用,使用密码登录客户端:redis-cli-h ip -p 6379 -a pwd
-
四、Redis的持久化
Redis提供持久化策略,用一些适当的手段在适当的时机将数据存在磁盘中,每次启动Redis都会自动加载磁盘的数据到内存中。
1、RDB(redis默认持久化策略)
RDB策略:在指定时间间隔内,redis服务执行指定次数的写操作,会自动触发依次持久化操作。
默认策略:【可以通过配置文件中的save <seconds><changes>修改】
-
1分钟内改变了1万次
-
5分钟内改变了10次
-
15分钟内改变了1次
配置属性:
save <seconds><changes>:配置持久化策略
dbfilename:配置redis RDB持久化数据存储的文件
dir:配置redis RDB持久化文件所在目录
2、AOF
采用操作日志来记录进行每一次写操作,每次redis服务启动时,都会重新执行一遍操作日志中的命令。效率较低,redis默认不开启。
appendonly:配置是否开启AOF
appendfilename:配置操作日志文件
3、总结
-
如果数据特别重要,可以开启两个策略,但是效率会降低。一般只开启RDB
五、Redis的事务
事务:把一组数据库放在一起执行,保证操作的原子性,要么同时成功,要么同时失败。
redis事务:允许把一组redis命令放在一起,把命令进行序列化,然后执行,可以保证部分原子性。
1、命令
-
multi:用来标记一个事务的开始。
-
exec:用来执行一组已压入的队列。
-
redis事务只能保证部分原子性:
-
一组数据在开始事务后,压入队列的过程中有其中一条数据出错,则所有事务将会回滚,可以保证事务的原子性。
-
如果一组命令中,在压入队列过程中正常,但是在执行事务队列命令时发生了错误,则只会影响发生错误的命令,不会影响其他命令的执行,不能够保证事务的原子性。
-
-
discard:清除所有压入队列中的命令,并且结束整个事务。
-
watch:监控某一个键,当事务在执行过程中,此键代码的值发生变化,则本事务放弃执行;否则,正常执行。
-
unwatch:放弃监控所有键
六、redis消息的发布与订阅
redis客户端订阅频道,消息的发布者往频道上发布消息,所有订阅该频道的客户端都会接收到消息。
-
subscribe:订阅一个或多个频道的消息。
语法:subscribe ch1 ch2 ch3
-
publish:将消息发布到指定频道
七、redis的主从复制(集群)
主少从多,主写从读,读写分离,主写同步复制到从。
-
搭建一主二从redis集群:
-
搭建三台redis服务:使用一个redis模拟三台redis服务
-
提供三份redis配置文件:redis6379.conf、redis6380.conf、redis6381.conf
-
修改三份配置文件:
-
bind 127.0.0.1
-
port 6379
-
pidfile /var/run/redis-6379.pid
-
logfile "6379.log"
-
dbfilename dump6379.rdb
-
-
启动三个redis服务
-
redis-server redis6379.conf &
-
-
通过redis客户端分别连接三台redis服务:
-
redis-cli -h 127.0.0.1 -p 6379
-
redis-cli -h 127.0.0.1 -p 6380
-
redis-cli -h 127.0.0.1 -p 6381
-
-
查看三台redis服务在集群中的主从角色:
-
info replication ;默认情况下redis服务器都是主机,可以读写操作,没有从机。
-
-
每一台服务器写数据,测试三台服务器独立,互补影响。
-
设置主从关系(6379为主机):主机的数据会自动存到从机上
-
在6380上执行:slaveof 127.0.0.1 6379
-
在6381上执行:slaveof 127.0.0.1 6379
-
-
全量复制:一旦主从关系设置,主机上的所有数据会自动同步复制到从机。
-
主写从读,读写分离:在从机上进行写操作,报错;
-
主机宕机:(模拟命令:redis-cli -h 127.0.0.1 -p 6379 shutdown)
-
从机原地待命:可以读已有的数据
-
主机恢复后一切恢复
-
-
从机宕机:
-
主机不连接已宕机的从机,其他从机未受影响。
-
从机恢复后与主机断开连接,自己默认为一个独立的主机
-
-
从机上位:
-
主机宕机
-
其中一个从机与主机断开连接,该从机变为主机,然后设置其他从机从属于该主机。
-
slaveof no one
-
slaveof 127.0.0.1 6380
-
-
数据位未丢失。
-
-
宕机的主机再恢复:(成为一个独立的主机)
-
可以作为主机:让其他从机连接(从机的数据不会更新到主机中)
-
可以作为从机:连接到其他主机或从机
小结:一台主机配置多台从机,一台从机又可以配置多台从机,从而形成一个庞大的集群结构。
减轻了一台主机的压力,但是增加了服务间的延迟时间。
-
-
八、哨兵模式
-
配置文件
-
新建配置文件:touch redis_sentinel.conf
-
打开配置文件:vim redis_sentinel.conf
-
设置参数:sentinel monitor dc-redis 127.0.0.1 6379 1
-
指定监控主机的IP地址
-
设置投票数量为1
-
-
启动哨兵服务:
-
redis-sentinel redis_sentinel.conf
-
-
主机宕机:哨兵程序自动选择从机上位;
-
之前的主机恢复:自动从属于新的主机。
-
入门学习Linux&&Git命令大集合
文章目录
Linux
Linux常识
操作系统概述
操作系统(operation system):操作系统是用户和计算机的接口,也是计算机硬件和应用程序的接口,用户通过操作系统和计算机、计算机硬件以及应用打交道。
常见的PC操作系统:Windows、Mac OS、Linux、Unix…
常见的手机操作系统:Android、IOS…
Linux发展史
Unix:商业化后价格昂贵。
Linux:1991年,Linux第一版0.02,继承了Unix的稳定性和效率高,1994年Linux 1.0发布。
Linux和GNU:Linux遵循GPL版权许可协议,全称GNU/Linux,GNU的目标是消除对软件拷贝、分发和修改的限制,Linux内核项目是遵循GPL的GNU Linux。
Linux版本
Linux版本分为内核版本和发行版本。内核版本有分成:主版本号、次版本号(奇数为开发版、偶数为稳定版)、末版本号。发行版本就比较多了,常见的有:RedHat Enterprise(付费)、Fedora(没有专业测试)、CentOS(基于RedHat源码进行了编译,免费)、Debian和Ubuntu(带界面)。国内互联网公司常用的是Centos。
Linux安装–安装步骤
Linux常见目录介绍
/ 系统根目录,通常不会再这里存放文件
/bin 二进制目录,存放许多GNU用户级工具
/boot 启动目录,存放启动文件
/dev 设备目录,在这里创建设备节点
/etc 系统配置文件目录
/home 用户主目录
/lib 库目录,存放系统及应用程序的库文件
/media 媒体目录,存放媒体设备挂点
/mnt 挂载目录,另一个存放可移动媒体设备挂载点的地方
/opt 可选目录,存放可选软件包
/root 管理员根目录
/sbin 系统二进制目录,存放GNU管理员级工具
/tmp 临时目录
/usr 用户安装软件目录
/var 可变目录,存放经常变化的文件,如日志文件等.
Linux常用命令
基础+磁盘+文件管理命令
查看当前目录: pwd
查看当前用户名: whoami
切换目录: cd 目标路径
前往根目录: cd /
回退上一级: cd ../
绝对路径: cd /目/标/
查看当前目录文件/文件夹: ls
查看目录下文件/文件夹详细信息: ls -ltr
展示所有文件(含隐藏): ls -a
展示目录文件: ls 目录名
创建和删除目录: mkdir/rmdir
递归创建目录: mkdir -p
文件拷贝: cp 文件名 目标
目录拷贝: cp -r 目录 目标目录
文件移动/改名: mv 文件名 目标目录(新文件名)
删除文件:rm
直接删除文件/文件夹:rm -rf
读取文件: cat 文件名 [cat aaa.txt]
输出到文件流: [cat aaa.txt > bbb.txt]
查看文件开头结尾多少行: head/tail -num 文件名
文件差异比较: diff
打包1: tar -zcvf 包名.tar.gz 要打包的文件
解压1: tar -zxcf 包名.tar.gz
打包2: zip 包名.zip 要打包的文件
解压2: unzip 包名.zip
查看历史指令: history
进阶命令
帮助命令: man
查询命令的详细信息: man 命令
查询配置文件的详细信息: man 5 文件名
用户和用户组的密码管理
创建用户: useradd work
删除用户: userdel work
修改当前用户密码: passwd
修改其他用户密码: passwd work
文件和目录权限管理: chmod
权限划分 -rwxrwxrwx- 前3位U(user归属人) 中3位G(group归属组) 后三位O(其它人)
数字权限 r读=4 w写=2 x执行=1 所有权限都有是7
修改权限: chmod 数字编号(777) 文件名
递归修改(当前目录下都会改): chmod -R 数字编号(777) 目录名
修改文件归属: chown (修改到user用户和group组)
修改归属人和归属组: chown user:group 文件名
递归修改目录下得所有文件(当前目录下都会改): chown -R user:group 目录名
搜索命令: grep abc -rl dirname (查找dirname中所有包含abc内容的文件)
文本编辑vim
这是linux最强大, 最常用的编辑方式
vim的常用模式
- 命令模式
打开vim之后默认进入的模式, 进入到vim最强大的命令模式, 可以从任意模式通过ESC键切换到命令模式。
命令 | 作用 |
---|---|
h,j,k,l | 光标移动: h左 j下 k右 l上 |
ctrl + f | 上一页 |
ctrl + b | 下一页 |
gg | 跳到第一行开始 |
G | 跳到最后一行开始 |
… | … |
- 插入模式
类似windows记事本, 通过(i, a , I , A)等命令进入插入模式
命令 | 作用 |
---|---|
i | 插入到光标前面 |
I | 插入到光标所在行最前面 |
a | 插入到光标后面 |
A | 插入到光标所在行最后面 |
o | 在光标所在行下面新开一行 |
O | 在光标所在行上面新开一行 |
- 可视模式
使用光标选取一片区域的文本内容, 之后通过命令操作, 只能从命令模式, 通过( ctrl+v , v )等命令进入可视模式
- 退出vim命令
命令 | 作用 |
---|---|
:w | 保存 |
:wq | 保存退出 |
:x | 保存退出 |
:q | 退出(已保存) |
:q! | 不保存强制退出 |
Linux系统管理
软件包管理
CentOS: yum
Ubuntu: apt
以CentOS为例, 安装软件
yum install 软件名 (-y跳过确认选项)
网络管理
ping命令: 检测网络连通性 ping www.baidu.com
telnet命令: 检测域名/IP和端口 telnet www.baidu.com 80
netstat命令: 各种网络信息
ifconfig命令: 查看网卡信息
进程管理
ps命令: 展示PID和CMD的内容
ps -ef: 内容丰富
top命令: 监控到每一条PID占有得CPU
kill命令: 杀死进程(kill <pid>) 强制杀死进程(kill -9 <pid>)
磁盘管理
df -h命令: 显示磁盘分区上可使用的磁盘空间
du -h命令: 显示每个文件和目录的磁盘使用空间
Git
版本控制工具
Git常识
-
版本控制概述
指对软件开发过程中的各种程序代码, 配置文件, 说明文档等文件变更的管理, 是软件配置管理的核心思想之一.
-
安装和配置Git
(1) 安装
linux安转Git
sudo yum-get install git
windows安装Git
在官网下载安装程序安装, 安装完成后在开始菜单找到"Git"–>“Git Bash”, 打开命令行窗口, 说明安装成功.
(2) 配置
配置提交代码的提交人信息, 全局生效
git config --global user.name "Your Name" git config --global user.email "Your email"
创建本地版本库, 先创建一个文件夹, 再使用git init初始化版本库
-
工作流程
工作区—git add—>暂存区—git commit—>版本库
本地版本库—git push—>远程版本库—git pull—>本地版本库
Git常用基本操作
git add : 将代码提交到暂存区
git status : 显示当前分支状态
git commit -m "备注": 将代码提交到本地仓库
git commit -a:上面add和commit两步的一次操作,即把工作区的修改提交到本地仓库
git commit -a --amend:在上一次提交的基础上,补充提交信息,不产生新的提交
git stash : 本次暂时不想提交的修改,放入暂存区
git checkout -f : 撤销本次修改,舍弃所有本次修改
git em --cached : 撤销添加到暂存区的修改
git reset 指定要返回到的状态 : 回滚到想要的代码状态
git tag : 给提交贴标签
git show:查看标签对应的提交信息
git push origin:将tag同步到远程仓库
git push origin --tags:将本地所有tag都同步到远程仓库
git log : 查看提交记录,从当前提交记录向前追溯
Git分支管理
分支用来记录当前所在节点的所有修改记录, 不会对其他分支影响, 也不会被其他分支影响.
分支的创建
git branch test : 在当前commit对象上新建分支
git checkout master : 切换回master分支
git branch -a:列出所有分支,包括远程分支
git branch -v:列出本地分支的最后一次提交信息
git branch -vv:列出本地分支及对应的远程分支
git branch -d <branch-name>:删除分支
git checkout -b <branch-name>:创建并切换分支
git rebase <branch-name>:分支变基
分支的合并
git merge <branch-name> : 合并分支
Git团队开发常用操作
git clone 仓库地址 : 克隆仓库代码
git remote : 显示远程仓库名
git remote -v : 显示远程仓库详细信息, 包括地址和权限等
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin master:将本地仓库同步到远程仓库
git push origin --delete:删除远程分支
git remote prune origin:清理失效的远程分支
git reset HEAD^:回退到上个版本,commit 信息回退,修改还在
git reset --hard HEAD^:彻底回退到上个版本,commit 信息和修改都回退
git diff:查看当前工作目录修改的内容
以上是关于Redis常用命令大集合(快速入门)的主要内容,如果未能解决你的问题,请参考以下文章