1 redis配置文件:
[root@xuegod63 ~]# vim /etc/redis.conf
daemonize no //表示redis并不会运行成为一个守护进程,如果需要运行成为一个守护进程,则把no,改为yes即可,如果使用服务脚本启动,即使daemonize为no,也会运行为一个守护进程
port 6379 //监听端口:6379/tcp
tcp-backlog 511 //指定tcp-backlog的长度
说明:任何的tcp服务都有可能使用到tcp-backlog功能,backlog是一个等待队列,比如:redis的并发很高时,redis有可能运行不过来时,就连接本地缓存等队列都满了以后,就会使用额外的存储地方,把新来的请求暂存下来,而这个位置则称为backlog
bind 127.0.0.1 //监听的地址,默认监听在127.0.0.1地址上,可以指定为0.0.0.0地址,或某个特定的地址,或可以指定多个,使用空格分隔即可
# unixsocket /tmp/redis.sock //指定使用sock文件通信及sock文件位置,如果服务端和客户都在同一台主机上,建议打开此项,基于sock方式通信可以直接在内存中交换,数据不用再经过TCP/TP协议栈进行封装、拆封
# unixsocketperm 700 //定义sock文件的访问权限
timeout 0 //表示当客户端连接成功后,空闲(非活跃、或没有任何数据交互)多长时间则连接超时,0表示不启用此功能
tcp-keepalive 0 //定义是否启用tcp-keepalive功能
loglevel notice //定义日志级别
logfile /var/log/redis/redis.log //定义日志文件
databases 16 //定义redis默认有多少个databases,但是在分布式中,只能使用一个
#### SNAPSHOTTING #### //定义RDB的持久化相关
save <seconds> <changes> //使用save指令,并指定每隔多少秒,如果发生多大变化,进行存储
示例:
save 900 1 //表示在900秒(15分钟内),如果至少有1个键发生改变,则做一次快照(持久化)
save 300 10 //表示在300秒(5分钟内),如果至少有10个键发生改变,则做一次快照(持久化)
save 60 10000 //表示在60秒(1分钟内),如果至少有10000个键发生改变,则做一次快照(持久化)
save "" //如果redis中的数据不需做持久化,只是作为缓存,则可以使用此方式关闭持久化功能
######## REPLICATION ####### //配置主从相关
# slaveof <masterip> <masterport> //此项不启用时,则为主,如果启动则为从,但是需要指明主服务器的IP,端口
# masterauth <master-password> //如果主服务设置了密码认证,那么从的则需要启用此项并指明主的认证密码
slave-read-only yes //定义从服务对主服务是否为只读(仅复制)
##### LIMITS ##### //定义与连接和资源限制相关的配置
# maxclients 10000 //定义最大连接限制(并发数)
# maxmemory <bytes> //定义使用主机上的最大内存,默认此项关闭,表示最大将使用主机上的最大可用内存
###### APPEND ONLY MODE ####### //定义AOF的持久化功能相关配置,一旦有某一个键发生变化,将修改键的命令附加到命令列表的文件中,类似于MySQL二进制日志
appendonly no //定义是否开启此功能,no表示关闭,yes表示开启
说明:RDB和AOF两种持久功能可以同时启用,两者不影响
2、登录redis:
[root@xuegod63 ~]# redis-cli -h
选项:
-h <hostname> 指定主机IP
-p <port> 指定端口socket文件进行通信
-s <socket> 指定socket文件,如果客户端和服务端都在同一台主机,可以指定socket文件进行通信
-a <password> 指定认证密码
-r <repeat> 连接成功后指定运行的命令N次
-i <interval> 连接成功后每个命令执行完成等待时间,使用-i选项指定
-n <db>
[root@xuegod63 ~]# redis-cli -h 192.168.1.63 //连接redis,默认不启用密码认证
或:
[root@xuegod63 ~]# redis-cli //使用redis-cli直接连接,默认连接是127.0.0.1 IP
127.0.0.1:6379> exit //退出连接
3、 redis获取帮助:
127.0.0.1:6379> help //获取使用帮助
说明:redis的help命令非常强大,因为redis支持众多的数据结构,每一种数据结构当中都支持N种操作,因此需要使用 help @group方式来获取某一种数据结构所支持的操作
例:获取字符串组所支持有那些操作
127.0.0.1:6379> help @string
127.0.0.1:6379> help APPEND //获取单个命令的使用方法
APPEND key value //命令方法
summary: Append a value to a key
since: 2.0.0 //说明此命令在哪个版本中引入的
group: string //该命令所属哪一个组
查看都有哪些组:
127.0.0.1:6379> help TAB键,每敲一次轮换一个,带有@则为一个组,不带@则为命令使用
切换库(名称空间):
127.0.0.1:6379> select 1 //表示切换到1号库中,默认为0号库,共16个,0-15
OK
127.0.0.1:6379[1]>
4、键的遵循:
可以使用ASCII字符
键的长度不要过长,键的长度越长则消耗的空间越多
在同一个库中(名称空间),键的名称不得重复,如果复制键的名称,实际上是修改键中的值
在不同的库中(名称空间),键的同一个名称可以重复
键可以实现自动过期
5、Strings的操作:
127.0.0.1:6379> help set
SET key value [EX seconds] [PX milliseconds] [NX|XX] //命令 键 值 [EX 过期时间,单位秒]
summary: Set the string value of a key
since: 1.0.0
group: string
NX:如果一个键不存在,才创建并设定值,否则不允许设定
XX:如果一个键存在则设置建的值,如果不存在则不创建并不设置其值
例:
127.0.0.1:6379> set cjk lzll
OK
127.0.0.1:6379> set cjk aaa NX
(nil) //反回提示一个没能执行的操作
127.0.0.1:6379> get cjk
"lzll"
127.0.0.1:6379> set foo abc XX
(nil)
定义一个键并设置过期时间为60秒
127.0.0.1:6379> set fda abc EX 60
OK
获取键中的值:
127.0.0.1:6379> help get
GET key
summary: Get the value of a key
since: 1.0.0
group: string
例:
127.0.0.1:6379> get cjk
"lzll"
添加键中的值(在原有键中附加值的内容):
127.0.0.1:6379> append cjk fda
(integer) 7
127.0.0.1:6379> get cjk
"lzllfda"
获取指定键中的值的字符串的长度:
127.0.0.1:6379> strlen cjk
(integer) 7
定义整数值:
127.0.0.1:6379> set fda 0 //整数值为0
OK
增加键中的整数值:
127.0.0.1:6379> incr fda
(integer) 1
127.0.0.1:6379> incr fda
(integer) 2
127.0.0.1:6379> incr fda
(integer) 3
127.0.0.1:6379> incr fda
(integer) 4
127.0.0.1:6379> get fda
"4"
注:incr命令只能对整数使用
删除键:
127.0.0.1:6379> del fda
(integer) 1
127.0.0.1:6379> get fda
(nil)
6、列表的操作:
键指向一个列表,而列表可以理解为是一个字符串的容器,列表是有众多元素组成的集合,可以在键所指向的列表中附加一个值
LPUSH //在键所指向的列表前面插入一个值(左边加入)
RPUSH //在键所指向的列表后面附加一个值(右边加入)
LPOP //在键所指向的列表前面弹出一个值(左边弹出)
RPOP //在键所指向的列表后面弹出一个值(右边弹出)
LINDEX //根据索引获取值,指明索引位置进行获取对应的值
LSET //用于修改指定索引的值为指定的值
例:
127.0.0.1:6379> help @list
LSET key index value
summary: Set the value of an element in a list by its index
since: 1.0.0
指定一个新的列表,在帮助中并没产明哪个命令用于创建一个新的列表,实际上创建一个新的列表使用LPUSH或RPUSH都可以
例:
127.0.0.1:6379> lpush ll cjk //ll为列表名称,cjk为值(索引)
(integer) 1
获取列表中的值:需要指明索引位置进行获取对应的值
127.0.0.1:6379> lindex ll 0 //第一个索引则为0
"cjk"
在原有的列表中的左侧加入一个值:
127.0.0.1:6379> lpush ll fda
(integer) 2
127.0.0.1:6379> lindex ll 0
"fda"
127.0.0.1:6379> lindex ll 1
"cjk"
在原有的列表中的右侧加入一个值
127.0.0.1:6379> rpush ll lzll
(integer) 3
127.0.0.1:6379> lindex ll 2
"lzll"
127.0.0.1:6379> lindex ll 1
"cjk"
127.0.0.1:6379> lindex ll 0
"fda"
修改一个已有的列表中的值:
127.0.0.1:6379> lset ll 0 abc
OK
127.0.0.1:6379> lindex ll 0
"abc"
查看列表中的值的数量
127.0.0.1:6379> llen ll
(integer) 3
在已有的列表中右侧弹出(删除)一个值
127.0.0.1:6379> rpop ll
"lzll"
在已有的列表中左侧弹出(删除)一个值
127.0.0.1:6379> lpop ll
"abc"
127.0.0.1:6379> lpop ll
"cjk"
127.0.0.1:6379> lpop ll
(nil)
7、认证实现方法:
(1) redis.conf
# requirepass foobared //启用此项,并指定密码即可
requirepass PASSWORD
例:
# vim /etc/redis.conf
requirepass kill
(1) redis.conf
# requirepass foobared //启用此项,并指定密码即可
requirepass PASSWORD
例:
# vim /etc/redis.conf
requirepass kill
# redis-cli
127.0.0.1:6379> select 1
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth kill
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]>
8、清空数据库:
FLUSHDB:删除当前选择的数据库所有key
FLUSHALL:清空所有库
127.0.0.1:6379> flushdb
OK