redis配置文件详解,附redis 命令

<?xml version='1.0' encoding='UTF-8'?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cache="http://www.springframework.org/schema/cache"  
    xmlns:p="http://www.springframework.org/schema/p"  
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/cache  http://www.springframework.org/schema/cache/spring-cache.xsd"  
    default-destroy-method="close" default-lazy-init="false">  
    <!-- 连接池配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大连接数 -->
<property name="maxTotal" value="30" />
<!-- 最大空闲连接数 -->
<property name="maxIdle" value="10" />
<!-- 每次释放连接的最大数目 -->
<property name="numTestsPerEvictionRun" value="1024" />
<!-- 释放连接的扫描间隔(毫秒) -->
<property name="timeBetweenEvictionRunsMillis" value="30000" />
<!-- 连接最小空闲时间 -->
<property name="minEvictableIdleTimeMillis" value="1800000" />
<!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
<property name="softMinEvictableIdleTimeMillis" value="10000" />
<!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
<property name="maxWaitMillis" value="1500" />
<!-- 在获取连接的时候检查有效性, 默认false -->
<property name="testOnBorrow" value="true" />
<!-- 在空闲时检查有效性, 默认false -->
<property name="testWhileIdle" value="true" />
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<property name="blockWhenExhausted" value="false" />
</bean>
<!-- redis集群 -->
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg index="0">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value=""></constructor-arg>
<constructor-arg index="1" value=""></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value=""></constructor-arg>
<constructor-arg index="1" value=""></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value=""></constructor-arg>
<constructor-arg index="1" value=""></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value=""></constructor-arg>
<constructor-arg index="1" value=""></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value=""></constructor-arg>
<constructor-arg index="1" value=""></constructor-arg>
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value=""></constructor-arg>
<constructor-arg index="1" value=""></constructor-arg>
</bean>
</set>
</constructor-arg>
<constructor-arg index="1" ref="jedisPoolConfig"></constructor-arg>
</bean>
    
  
</beans> 



redis内存回收策略:

http://blog.csdn.net/a_bang/article/details/52986935?locationNum=9&fps=1

http://blog.sae.sina.com.cn/archives/4045

http://www.cnblogs.com/zhangchao-letv/articles/6119313.html

查看过期key剩余时间ttl 

当  key 不存在时,返回  -2 。
当  key 存在但没有设置剩余生存时间时,返回  -1 。


# vi redis.conf

daemonize yes #是否以后台进程运行

pidfile /var/run/redis/redis-server.pid    #pid文件位置

port 6379#监听端口

bind 127.0.0.1   #绑定地址,如外网需要连接,设置0.0.0.0

timeout 300     #连接超时时间,单位秒

loglevel notice  #日志级别,分别有:

# debug :适用于开发和测试

# verbose :更详细信息

# notice :适用于生产环境

# warning :只记录警告或错误信息

logfile /var/log/redis/redis-server.log   #日志文件位置

syslog-enabled no    #是否将日志输出到系统日志

databases 16#设置数据库数量,默认数据库为0


############### 快照方式 ###############


save 900 1    #在900s(15m)之后,至少有1个key发生变化,则快照

save 300 10   #在300s(5m)之后,至少有10个key发生变化,则快照

save 60 10000  #在60s(1m)之后,至少有1000个key发生变化,则快照

rdbcompression yes   #dump时是否压缩数据

dir /var/lib/redis   #数据库(dump.rdb)文件存放目录


############### 主从复制 ###############


slaveof <masterip> <masterport>  #主从复制使用,用于本机redis作为slave去连接主redis

masterauth <master-password>   #当master设置密码认证,slave用此选项指定master认证密码

slave-serve-stale-data yes     #当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNC with master in progress"错误信息。但INFO和SLAVEOF命令除外。


############### 安全 ###############


requirepass pass   #配置redis连接认证密码


############### 限制 ###############


maxclients 128#设置最大连接数,0为不限制

maxmemory <bytes>#内存清理策略,如果达到此值,将采取以下动作:

# volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除

# allkeys-lru :删除不经常使用的key

# volatile-random :随机删除即将过期的key

# allkeys-random :随机删除一个key

# volatile-ttl :删除即将过期的key

# noeviction :不过期,写操作返回报错

maxmemory-policy volatile-lru#如果达到maxmemory值,采用此策略

maxmemory-samples 3   #默认随机选择3个key,从中淘汰最不经常用的


############### 附加模式 ###############


appendonly no    #AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘

appendfilename appendonly.aof  #指定更新日志文件名

# AOF持久化三种同步策略:

# appendfsync always   #每次有数据发生变化时都会写入appendonly.aof

# appendfsync everysec  #默认方式,每秒同步一次到appendonly.aof

# appendfsync no       #不同步,数据不会持久化

no-appendfsync-on-rewrite no   #当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件。


############### 虚拟内存 ###############


vm-enabled no      #是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存

vm-swap-file /var/lib/redis/redis.swap   #虚拟内存文件位置

vm-max-memory 0    #redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能

vm-page-size 32    #每个页面的大小为32字节

vm-pages 134217728  #设置swap文件中页面数量

vm-max-threads 4    #访问swap文件的线程数


############### 高级配置 ###############


hash-max-zipmap-entries 512   #哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间

hash-max-zipmap-value 64     #哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间

list-max-ziplist-entries 512  #list数据类型多少节点以下会采用去指针的紧凑存储格式

list-max-ziplist-value 64    #list数据类型节点值大小小于多少字节会采用紧凑存储格式

set-max-intset-entries 512   #set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储

activerehashing yes        #是否激活重置哈希


总结:

1、redis提供几种持久化机制:

 a). RDB持久化

 工作方式 :根据时间的间隔将redis中数据快照(dump)到dump.rdb文件

 优势 :备份恢复简单。RDB通过子进程完成持久化工作,相对比AOF启动效率高

 劣势 :服务器故障会丢失几分钟内的数据

 b). AOF持久化

 工作方式 :以日志的形式记录所有更新操作到AOF日志文件,在redis服务重新启动时会读取该日志文 件来重新构建数据库,以保证启动后数据完整性。

 优势 :AOF提供两种同步机制,一个是fsync always每次有数据变化就同步到日志文件和fsync everysec每秒同步一次到日志文件,最大限度保证数据完整性。

 劣势:日志文件相对RDB快照文件要大的多

 AOF日志重写功能 :AOF日志文件过大,redis会自动重写AOF日志,append模式不断的将更新记录写入到老日志文件中,同时redis还会创建一个新的日志文件用于追加后续的记录。

 c). 同时应用AOF和RDB

 对于数据安全性高的场景,可同时使用AOF和RDB,这样会降低性能。

 d). 无持久化

 禁用redis服务持久化功能。

2、AOF日志文件出错后,修复方法 :

redis-check-aof --fix appendonly.aof  #--fix参数为修复日志文件,不加则对日志检查

3、不重启redis从RDB持久化切换到AOF持久化 :

redis-cli> CONFIG SET appendonly yes      #启用AOF

redis-cli> CONFIG SET save ""         #关闭RDB


执行 CONFIG GET s* 命令,服务器就会返回所有以 s 开头的配置参数及参数的值:

redis> CONFIG GET s*
1) "save"                       # 参数名:save
2) "900 1 300 10 60 10000"      # save 参数的值
3) "slave-serve-stale-data"     # 参数名: slave-serve-stale-data
4) "yes"                        # slave-serve-stale-data 参数的值
5) "set-max-intset-entries"     # ...
6) "512"
7) "slowlog-log-slower-than"
8) "1000"
9) "slowlog-max-len"
10) "1000"


以下内容后期整理

# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)
#
# 1k =>
1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb =>
1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024
bytes
#
# 内存配置大小写是一样的.比如 1gb 1Gb 1GB 1gB


# daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes
daemonize
yes


# 当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。
#
当运行多个redis服务时,需要指定不同的pid文件和端口
pidfile /var/run/redis.pid


# 指定redis运行的端口,默认是6379
port 6379


# 指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求,
# 在生产环境中最好设置该项
# bind
127.0.0.1


# Specify the path for the unix socket that will be used to listen for
#
incoming connections. There is no default, so Redis will not listen
# on a
unix socket when not specified.
#
# unixsocket /tmp/redis.sock
#
unixsocketperm 755


# 设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接
# 0是关闭此设置
timeout
0


# 指定日志记录级别
# Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
#debug  记录很多信息,用于开发和测试
# varbose 有用的信息,不像debug会记录那么多
#notice 普通的verbose,常用于生产环境
# warning 只有非常重要或者严重的信息会记录到日志
loglevel
debug


# 配置log文件地址
# 默认值为stdout,标准输出,若后台模式会输出到/dev/null
#logfile
stdout
logfile /var/log/redis/redis.log


# To enable logging to the system logger, just set 'syslog-enabled' to
yes,
# and optionally update the other syslog parameters to suit your
needs.
# syslog-enabled no


# Specify the syslog identity.
# syslog-ident redis


# Specify the syslog facility.  Must be USER or between LOCAL0-LOCAL7.
#
syslog-facility local0


# 可用数据库数
# 默认值为16,默认数据库为0,数据库范围在0-(database-1)之间
databases 16


################################ 快照  
#################################
#
# 保存数据到磁盘,格式如下:
#
#   save <seconds> <changes>
#
#   
指出在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb。
#   相当于条件触发抓取快照,这个可以多个条件配合
#   
#   
比如默认配置文件中的设置,就设置了三个条件
#
#   save 900 1  900秒内至少有1个key被改变
#   save 30010  300秒内至少有300个key被改变
#   save 60 10000  60秒内至少有10000个key被改变


save 900 1
save 300 10
save 60 10000


# 存储至本地数据库时(持久化到rdb文件)是否压缩数据,默认为yes
rdbcompression yes


# 本地持久化数据库文件名,默认值为dump.rdb
dbfilename dump.rdb


# 工作目录
#
# 数据库镜像备份的文件放置的路径。
#
这里的路径跟文件名要分开配置是因为redis在进行备份时,先会将当前数据库的状态写入到一个临时文件中,等备份完成时,
#
再把该该临时文件替换为上面所指定的文件,而这里的临时文件和上面所配置的备份文件都会放在这个指定的路径当中。
#
#
AOF文件也会存放在这个目录下面
#
# 注意这里必须制定一个目录而不是文件
dir ./


################################# 复制
#################################


# 主从复制. 设置该数据库为其他数据库的从数据库.
#
设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步
#
# slaveof
<masterip> <masterport>


# 当master服务设置了密码保护时(用requirepass制定的密码)
# slave服务连接master的密码
#
#
masterauth <master-password>




# 当从库同主机失去连接或者复制正在进行,从机库有两种运行方式:
#
# 1)
如果slave-serve-stale-data设置为yes(默认设置),从库会继续相应客户端的请求
#
# 2)
如果slave-serve-stale-data是指为no,出去INFO和SLAVOF命令之外的任何请求都会返回一个
#    错误"SYNC with
master in progress"
#
slave-serve-stale-data yes


# 从库会按照一个时间间隔向主库发送PINGs.可以通过repl-ping-slave-period设置这个时间间隔,默认是10秒
#
#
repl-ping-slave-period 10


# repl-timeout 设置主库批量数据传输时间或者ping回复时间间隔,默认值是60秒
#
一定要确保repl-timeout大于repl-ping-slave-period
# repl-timeout 60


################################## 安全
###################################


# 设置客户端连接后进行任何其他指定前需要使用的密码。
#
警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解
#
#
requirepass foobared


# 命令重命名.
#
# 在一个共享环境下可以重命名相对危险的命令。比如把CONFIG重名为一个不容易猜测的字符。
#
#
举例:
#
# rename-command CONFIG
b840fc02d524045429941cc15f59e41cb7be6c52
#
#
如果想删除一个命令,直接把它重命名为一个空字符""即可,如下:
#
# rename-command CONFIG ""


################################### 约束
####################################


# 设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,
# 如果设置
maxclients 0,表示不作限制。
# 当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients
reached错误信息
#
# maxclients 128


# 指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key
#
Redis同时也会移除空的list对象
#
#
当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作
#
#
注意:Redis新的vm机制,会把Key存放内存,Value会存放在swap区
#
#
maxmemory的设置比较适合于把redis当作于类似memcached的缓存来使用,而不适合当做一个真实的DB。
#
当把Redis当做一个真实的数据库使用的时候,内存使用将是一个很大的开销
# maxmemory <bytes>


# 当内存达到最大值的时候Redis会选择删除哪些数据?有五种方式可供选择
#
# volatile-lru ->
利用LRU算法移除设置过过期时间的key (LRU:最近使用 Least Recently Used )
# allkeys-lru ->
利用LRU算法移除任何key
# volatile-random -> 移除设置过过期时间的随机key
#
allkeys->random -> remove a random key, any key
# volatile-ttl ->
移除即将过期的key(minor TTL)
# noeviction -> 不移除任何可以,只是返回一个写错误
#
#
注意:对于上面的策略,如果没有合适的key可以移除,当写的时候Redis会返回一个错误
#
#       写命令包括: set setnx
setex append
#       incr decr rpush lpush rpushx lpushx linsert lset
rpoplpush sadd
#       sinter sinterstore sunion sunionstore sdiff sdiffstore
zadd zincrby
#       zunionstore zinterstore hset hsetnx hmset hincrby incrby
decrby
#       getset mset msetnx exec sort
#
# 默认是:
#
#
maxmemory-policy volatile-lru


# LRU 和 minimal TTL 算法都不是精准的算法,但是相对精确的算法(为了节省内存),随意你可以选择样本大小进行检测。
#
Redis默认的灰选择3个样本进行检测,你可以通过maxmemory-samples进行设置
#
# maxmemory-samples
3


############################## AOF ###############################




#
默认情况下,redis会在后台异步的把数据库镜像备份到磁盘,但是该备份是非常耗时的,而且备份也不能很频繁,如果发生诸如拉闸限电、拔插头等状况,那么将造成比较大范围的数据丢失。
#
所以redis提供了另外一种更加高效的数据库备份及灾难恢复方式。
# 开启appendonly模式之后,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态。
#
但是这样会造成appendonly.aof文件过大,所以redis还支持了BGREWRITEAOF指令,对appendonly.aof 进行重新整理。
#
你可以同时开启asynchronous dumps 和 AOF


appendonly no


# AOF文件名称 (默认: "appendonly.aof")
# appendfilename appendonly.aof


# Redis支持三种同步AOF文件的策略:
#
# no: 不进行同步,系统去操作 . Faster.
# always:
always表示每次有写操作都进行同步. Slow, Safest.
# everysec: 表示对写操作进行累积,每秒同步一次.
Compromise.
#
# 默认是"everysec",按照速度和安全折中这是最好的。
#
如果想让Redis能更高效的运行,你也可以设置为"no",让操作系统决定什么时候去执行
#
或者相反想让数据更安全你也可以设置为"always"
#
# 如果不确定就用 "everysec".


# appendfsync always
appendfsync everysec
# appendfsync no


# AOF策略设置为always或者everysec时,后台处理进程(后台保存或者AOF日志重写)会执行大量的I/O操作
#
在某些Linux配置中会阻止过长的fsync()请求。注意现在没有任何修复,即使fsync在另外一个线程进行处理
#
#
为了减缓这个问题,可以设置下面这个参数no-appendfsync-on-rewrite
#
# This means that while
another child is saving the durability of Redis is
# the same as "appendfsync
none", that in pratical terms means that it is
# possible to lost up to 30
seconds of log in the worst scenario (with the
# default Linux
settings).
#
# If you have latency problems turn this to "yes". Otherwise
leave it as
# "no" that is the safest pick from the point of view of
durability.
no-appendfsync-on-rewrite no


# Automatic rewrite of the append only file.
# AOF 自动重写
#
当AOF文件增长到一定大小的时候Redis能够调用 BGREWRITEAOF 对日志文件进行重写
#
#
它是这样工作的:Redis会记住上次进行些日志后文件的大小(如果从开机以来还没进行过重写,那日子大小在开机的时候确定)
#
#
基础大小会同现在的大小进行比较。如果现在的大小比基础大小大制定的百分比,重写功能将启动
#
同时需要指定一个最小大小用于AOF重写,这个用于阻止即使文件很小但是增长幅度很大也去重写AOF文件的情况
# 设置 percentage
为0就关闭这个特性


auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb


################################## SLOW LOG
###################################


# Redis Slow Log 记录超过特定执行时间的命令。执行时间不包括I/O计算比如连接客户端,返回结果等,只是命令执行时间
#
#
可以通过两个参数设置slow log:一个是告诉Redis执行超过多少时间被记录的参数slowlog-log-slower-than(微妙),
#
另一个是slow log 的长度。当一个新命令被记录的时候最早的命令将被从队列中移除


# 下面的时间以微妙微单位,因此1000000代表一分钟。
#
注意制定一个负数将关闭慢日志,而设置为0将强制每个命令都会记录
slowlog-log-slower-than 10000


# 对日志长度没有限制,只是要注意它会消耗内存
# 可以通过 SLOWLOG RESET
回收被慢日志消耗的内存
slowlog-max-len 1024





 1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:
    #在Shell命令行下启动Redis客户端工具。
    /> redis-cli
    #清空当前选择的数据库,以便于对后面示例的理解。
    redis 127.0.0.1:6379> flushdb
    OK
    #添加String类型的模拟数据。
    redis 127.0.0.1:6379> set mykey 2
    OK
    redis 127.0.0.1:6379> set mykey2 "hello"
    OK
    #添加Set类型的模拟数据。
    redis 127.0.0.1:6379> sadd mysetkey 1 2 3
    (integer) 3
    #添加Hash类型的模拟数据。
    redis 127.0.0.1:6379> hset mmtest username "stephen"
    (integer) 1
    #根据参数中的模式,获取当前数据库中符合该模式的所有key,从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。
    redis 127.0.0.1:6379> keys my*
    1) "mysetkey"
    2) "mykey"
    3) "mykey2"
    #删除了两个Keys。
    redis 127.0.0.1:6379> del mykey mykey2
    (integer) 2
    #查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。
    redis 127.0.0.1:6379> exists mykey
    (integer) 0
    #查看一下没有删除的Key,以和上面的命令结果进行比较。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 1
    #将当前数据库中的mysetkey键移入到ID为1的数据库中,从结果可以看出已经移动成功。
    redis 127.0.0.1:6379> move mysetkey 1
    (integer) 1
    #打开ID为1的数据库。
    redis 127.0.0.1:6379> select 1
    OK
    #查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。
    redis 127.0.0.1:6379[1]> exists mysetkey
    (integer) 1
    #在重新打开ID为0的缺省数据库。
    redis 127.0.0.1:6379[1]> select 0
    OK
    #查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 0
    #准备新的测试数据。    
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #将mykey改名为mykey1
    redis 127.0.0.1:6379> rename mykey mykey1
    OK
    #由于mykey已经被重新命名,再次获取将返回nil。
    redis 127.0.0.1:6379> get mykey
    (nil)
    #通过新的键名获取。
    redis 127.0.0.1:6379> get mykey1
    "hello"
    #由于mykey已经不存在了,所以返回错误信息。
    redis 127.0.0.1:6379> rename mykey mykey1
    (error) ERR no such key
    #为renamenx准备测试key
    redis 127.0.0.1:6379> set oldkey "hello"
    OK
    redis 127.0.0.1:6379> set newkey "world"
    OK
    #由于newkey已经存在,因此该命令未能成功执行。
    redis 127.0.0.1:6379> renamenx oldkey newkey
    (integer) 0
    #查看newkey的值,发现它也没有被renamenx覆盖。
    redis 127.0.0.1:6379> get newkey
    "world"
        
   2. PERSIST/EXPIRE/EXPIREAT/TTL:    
    #为后面的示例准备的测试数据。
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #将该键的超时设置为100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #通过ttl命令查看一下还剩下多少秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 97
    #立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。
    redis 127.0.0.1:6379> persist mykey
    (integer) 1
    #ttl的返回值告诉我们,该键已经没有超时了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1
    #为后面的expire命令准备数据。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #设置该键的超时被100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #用ttl命令看一下当前还剩下多少秒,从结果中可以看出还剩下96秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 96
    #重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。
    redis 127.0.0.1:6379> expire mykey 20
    (integer) 1
    #再用ttl确认一下,从结果中可以看出果然被更新了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 17
    #立刻更新该键的值,以使其超时无效。
    redis 127.0.0.1:6379> set mykey "world"
    OK
    #从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1

   3. TYPE/RANDOMKEY/SORT:
    #由于mm键在数据库中不存在,因此该命令返回none。
    redis 127.0.0.1:6379> type mm
    none
    #mykey的值是字符串类型,因此返回string。
    redis 127.0.0.1:6379> type mykey
    string
    #准备一个值是set类型的键。
    redis 127.0.0.1:6379> sadd mysetkey 1 2
    (integer) 2
    #mysetkey的键是set,因此返回字符串set。
    redis 127.0.0.1:6379> type mysetkey
    set
    #返回数据库中的任意键。
    redis 127.0.0.1:6379> randomkey
    "oldkey"
    #清空当前打开的数据库。
    redis 127.0.0.1:6379> flushdb
    OK
    #由于没有数据了,因此返回nil。
    redis 127.0.0.1:6379> randomkey
    (nil)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值