Redis初识

##1. 常用命令

# 删除
del [key1], [key2]...
# 查找key
keys [通配符]
# 查找key是否存在(存在返回1; 不存在返回0)
exists [key]
# 设置key的有效期
expire [key] [seconds]
# 设置key永不过期
persist [key]
# 查看某个key的过期时间(单位:秒)
ttl [key]
# 选择数据库(0~15)
select [number]  
# 数据自增
incr [key]
incrby [key] [step]
# 数据自减
decr [key]
decrby [key] [step]
# 清除当前数据库所有的key
flushdb
# 清楚所有数据库的所有的key
flushall
# 查看redis信息
info

a). value部分是字符串。
b). 底层存储数据都是字节(byte)数组, 所以可以保存任意数据。只是在表现上是字符串。
c). value部分最多保存512M数据。
d). Redis不限制数据的数量,可以存储无限制的数据,只要磁盘和内存足够大。

# 添加或修改
set [key] [value]
# 查询
get [key]
#批量新增或更新(如果数据中有空格,使用双引号界定范围)
mset [key1] [value1] [key2] [value2] [key3] [value3] ...
#批量查询
mget [key1] [key2] [key3] ...

a). value部分相当于一个Map.
b). value数据可以再次保存若干键值对.没有数量容量限制。redis中保存的数据就类似: Map<String, Map<String, String>>

#新增
hset [key] [field] [value]
#查询
hget [key] [field]
#删除
hdel [key] [field]
#批量新增(如果数据中有空格,使用双引号)
hmset [key] [field1] [value1] [field2] [value2]...
#批量查询(数据中有空格,使用双引号)
hmget [key] [field1] [field2] ...
#批量删除(数据中有空格,使用双引号)
hdel [key] [field1] [field2]...
#查询所有的fields
hkeys [key]
#查询所有的values
hvals [key]
#查询所有的fields-values
hgetall [key]
#检查field是否存在
hexists [key] [field]
#查询hash数据的field-value数据对数量
hlen [key]

##4. 链表(list)

a). 有存储顺序. 底层使用链表实现的.
b). 可以一个key对应若干数据, 数据可重复。类似: Map<String, List>

#将一个或多个值value插入到列表key的表头
lpush [key] [value]
#移除并返回列表key的头元素。
lpop [key]
#根据参数count的值,移除列表中与参数value相等的元素。
#count=0时,删除所有与参数value相等的元素
#count>0时,从左往右删除[count]与参数value相等的元素
#count<0时,从右往左删除[count]与参数value相等的元素
lrem [key] [count] [value]
#返回列表key的长度。
llen [key]
#返回列表key中,下标为index的元素
lindex [key] [index]
# 将列表key下标为index的元素的值设置为value
lset [key] [index] [value]
# 一个列表,包含指定区间内的元素
lrange [key] [start] [stop]

##5. 集合(set)

a). 底层使用Hash实现(保证数据唯一性)。
b). 可以一个key对应若干数据, 数据不可重复。类似: Map<String, Set>

#将一个或多个member元素加入到集合key当中,已经存在于集合的 member元素将被忽略
sadd [key] [member1] [member2]
#如果member元素是集合的成员,返回 1 。否则,返回 0
sismemeber [key] [member] ...
#移除并返回集合中的一个随机元素
spop [key]
#移除集合key中的一个或多个member元素,不存在的 member 元素会被忽略
srem [key] [member1] [member2] ...

##6. 有序集合(zset)

可排序的set。类似: Map<String, TreeSet>

    #将一个或多个member元素及其score值加入到有序集key当中
    zadd [key] [member]
    #移除有序集key中的一个或多个成员,不存在的成员将被忽略
    zrem [key] [member1], [member2] ...

<p>##7. 事务</p>
#监控某个key
watch [key]
# 对某个key取消监控
unwatch [key]
# 开启事务
multi
# 提交事务
exec
# 放弃事务
discard

##8. Redis持久化

a. RDB(redis database)持久化(默认)

1). 将数据存储在一个dump.rdb的文件中。文件中保存的数据就是redis中的内存数据。dump.rdb文件保存的位置是启动redis服务时执行命令所在的目录。所以多次启动redis时,一定要在同一个位置启动服务,否则会有数据丢失。
2). 效率高,对磁盘的访问比较合理,对内存数据的监控也是有一定临界值的,保证数据尽可能不丢失。在绝对意义上,只要是内存行存储数据的存储应用,就一定有数据丢失的可能。
3). 配置rdb存储的相关信息,在redis.conf文件中配置

#   In the example below the behaviour will be to save:
#   after 900 sec (15 min) if at least 1 key changed
#   after 300 sec (5 min) if at least 10 keys changed
#   after 60 sec if at least 10000 keys changed
#   Note: you can disable saving completely by commenting out all "save" lines.
#   It is also possible to remove all the previously configured save
#   points by adding a save directive with a single empty string argument
#   like in the following example:
#   save ""
# 持久数据的规则. RDB持久规则. 存储数据的文件由dbfilename参数决定
save 900 1
save 300 10
save 60 10000

# RDB持久数据的文件命名. 可以使用绝对路径配置,如果没有路径配置,在命令运行的相对位置开始寻址存在。
dbfilename dump.rdb

#解说:save <指定时间间隔> <执行指定次数更新操作>
#满足条件就将内存中的数据同步到硬盘中。
#官方出厂配置默认是
#900秒内有1个更改,
#300秒内有10个更改
#60秒内有10000个更改
#则将内存中的数据快照写入磁盘。
#若不想用RDB方案,可以把 save "" 的注释打开,下面三个注释。

AOF(Apend Of File)持久化(推荐)
1). 对磁盘和IO的资源需求比rdb方式高很多。对redis服务器的性能有很大的影响。
2). Redis每秒钟以追加的方式,向一个文件中存储redis的数据变化。
3). AOF和RDB可以同时开启,但是,在redis重启的时候,会优先读取aof中保存的数据变化日志。不推荐同时启用,对磁盘的压力和IO的压力太高。
4).在redis.conf配置文件中配置aof相关信息。

# 是否启用append of file持久化方式.默认关闭.
# 每秒持久一次数据. 以追加的方式,持久到数据文件.
appendonly no

# aof持久方式的文件名称.
appendfilename "appendonly.aof"

##9. 其他网页参考

http://redisdoc.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值