20分钟学会 Redis 缓存服务器的使用

Redis 简介

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

Redis 数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

Hash(哈希)

Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

List(列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

Set(集合)

Redis 的 Set 是 string 类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

Redis 命令

进入客户端命令

连接redis客户端命令
远程 redis 服务上执行命令

$ redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG

$ redis-cli -h host -p port -a password
select index 切换 redis 数据库
flushdb 删除当前数据库所有的 key
flushall 删除所有数据
auth password 验证密码
echo message
ping 查看服务是否在运行
quit 退出连接

补充有时候会出现乱码,加 raw 可以解决

redis-cli --raw
字符串命令
set key value  设置指定 key 的值
get key 
del key 
strlen key 返回 key 所储存的字符串值的长度
mset key value [key value...]  --批量设置键值
mget key [key...]  --批量获取键值
incr key  将 key 中储存的数字值增一
decr key 将 key 中储存的数字值减一。
incrby key increment 将 key 所储存的值加上给定的增量值
decrby key decrement key 所储存的值减去给定的减量值
incrbyfloat key increment 将 key 所储存的值加上给定的浮点增量值 
getset key value 将给定 key 的值设为 value ,并返回 key 的旧值
append key value --如果key值存在则在key后面追加字符,不存在则创建
setrange key offset value --设置指定位置字符
getrange key start end --获取部分字符串
哈希 hash 类型命令
hset key field value  将哈希表 key 中的字段 field 的值设为 value 。
hsetnx key field value --原key的field不存在则set成功,否则失败
hget key field 获取存储在哈希表中指定字段的值。
hdel key field 删除一个或多个哈希表字段
hgetall key 获取在哈希表中指定 key 的所有字段和值
hlen key 获取哈希表中字段的数量
hmget key  field [field...] 获取所有给定字段的值
hmset key filed value [field value...] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
hkeys key 获取所有哈希表中的字段
hvals key 获取哈希表中所有值
hexists key field 查看哈希表 key 中,指定的字段是否存在
hstrlen key field
hincrby key field increment 为哈希表 key 中的指定字段的整数值加上增量 
hincrybyfloat key field increment 为哈希表 key 中的指定字段的浮点数值加上增量
列表 list 命令
lpush key value [value...] 将一个或多个值插入到列表头部
rpush key value [value...] 在列表中添加一个或多个值
lpop key 移出并获取列表的第一个元素
rpop key 移除列表的最后一个元素,返回值为移除的元素。
lrange key start end 获取列表指定范围内的元素
llen key 获取列表长度
lset key index value 通过索引设置列表元素的值
blpop key [key...] timeout--左侧阻塞式弹出
brpop key [key...] timeout --右侧阻塞式弹出
lindex key index   --获取对应index的value
linsert key before|after pivot value   --在'pivot'这个元素之前(before)或之后(after)插入一个值
ltrim key start end --按照索引范围剪裁列表 如 ltrim list 1 3  就是保留
集合 set 命令
sadd key element [element...] 向集合添加一个或多个成员
srem key element [element...] 移除集合中一个或多个成员
smembers key  --查看集合所有的元素
sismember key element --查看元素是否属于该集合
scard key  --查看集合元素数量
srandmember key --随机获取集合中某一个元素
spop key 移除并返回集合中的一个随机元素
sinter key [key...] 返回给定所有集合的交集
sdiff key [key...] 返回给定所有集合的差集
sunion key [key...] 返回所有给定集合的并集
sinterstore destination  key [key...] 返回给定所有集合的交集并存储在 destination 中
sdiffstore destination key [key] 返回给定所有集合的差集并存储在 destination 中
sunionstore destination key [key...] 所有给定集合的并集存储在 destination 集合中
SSCAN key cursor [MATCH pattern] [COUNT count]
迭代集合中的元素
有序集合Zset 命令
zadd key score member [score member]
zrem key member
zcard key
zscore key member
zrank key member
zrevrank key member
zincrby key increment member
zrange key start end [withscores]
zrevrange key start end [withscores]
zrangebyscore key min max [withscores]
zrevrangebyscore key max min [withscores]
zcount key min max   ##所有的min max 支持开区间闭区间,并且 -inf代表无穷小+inf代表无穷大##
zremrangebyscore key min max    ##如 zrangebyscore score:rank  (80 +inf ##
zremrangebyrank key start end   ##代表查找score:rank这个有序集合中大于80分的成员##
zinterstore destination numkeys key [key...]  --这里numkeys表示需要做交集的key的个数
zunionstore destination numkeys key [key...]  --这里numkeys代表需要做并集的key的个数
系统命令
keys pattern --查找满足pattern正则表达的key,如 keys * 表示所有的键 
dbsize --redis中所有的键的数量
rename key newkey --对键重命名,若newkey已经存在于redis中则覆盖,并删除原来的key
renamenx key newkey --当newkey不存在时才操作成功
randomkey --随机返回一个key
expire key second --key在second秒之后失效
expireat key timestamp  -- timestamp代表秒级别的时间戳
pexpire key milliseconds --key 在 milliseconds 毫秒后过期
pexpireat key milliseconds-timestamp --key 在 milliseconds-timestamp毫秒级别的时间戳后失效
scan key cusor [match pattern] [COUNT count] 
hscan key cusor [match pattern] [COUNT count] --hash类型渐进式遍历
sscan key cusor [match pattern] [COUNT count] --set类型渐进式遍历
zscan key cusor [match pattern] [COUNT count] --sortedSet类型渐进式遍历
select dbIndex --切换数据库
#########迁移键############
move key db --将key迁移到db中去
dump key --将key序列化,RDB格式
resotre key ttl value --将序列化的值复原 ttl代表过期时间,若ttl为0则代表永久有效
migrate host port key|"" destinationdb timeout [copy] [replace] [keys key [key...]]
@@@@@@ migrate参数说明 host->目标redis IP port->目标redis 端口 key|""->迁移多个键 
@@@@@@ destination-db 目标redis数据库索引  timeout->迁移超时时间 [copy]->可选,迁移后不删除原键
@@@@@@ [replace] ->可选,不管目标redis是否存在该key,都会正常迁移并覆盖
@@@@@@ [keys key [key...]] ->迁移多个键,如迁移key1,key2,key3,则为 keys key1 key2 key3
#########迁移键############

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值