Redis基本操作

高性能键值对数据库,支持的键值数据类型
  • 字符串类型
  • 列表类型
  • 有序集合类型
  • 散列类型
  • 集合类型
Redis应用场景
  • 缓存
  • 任务队列
  • 网站访问统计
  • 数据过期处理
  • 应用排行榜
  • 分布式集群架构中的session分离

Redis的数据结构
  • 字符串(String)
  • 哈希(hash)
  • 字符串列表(list)
  • 字符串集合(set)
  • 有序字符串集合(sortes set)
Key定义的注意点
  • 不要太长(不超过1024字节)
  • 不要太短(可读性差)

存储String
  • 二进制安全的,存入和获取的数据相同
  • Value最多可以容纳的数据长度是512M
存储String常用命令
  • 赋值
  • 取值
  • 删除
  • 数值增减
  • 扩展命令

set

    设置值:set key value

get

    取值:get key

del

    删除:del key

getset

    先取值后替换值:getset oldValue newValue

incr

    自增一:incr key(若key不存在则新建0值)

decr

    自减一:decr key(若key不存在则新建0值)

incrby

    增加指定数值:incrby key num(若key不存在则新建0值)

decrby

    减少指定数值:decrby key num(若key不存在则新建0值)

append

    追加字符串:append key str(不存在则新建空串)

keys *

    查看当前所有键


存储Hash
  • String Key和String Value的map容器
  • 每一个Hash可以存储4294967295个键值对
存储Hash常用命令
  • 赋值
  • 取值
  • 删除
  • 增加数字
  • 自学命令

hset

    赋值:hset myhash username jack(一次只能存一个键值对)

hmset

    赋值:hmset myhash username jack age 21(一次存放多个键值对)

hget

    取值:hget myhash username(一次只能取一个键值对的值)

hmget

    取值:hmget myhash username age(一次能取多个键值对的值)

hgetall

    取值:hgetall myhash(一次将集合中的所有键值对都取出来)

hdel

    删除:hdel myhash username age

del

    删除:del myhash(删除整个集合)

hincrby

    增加数字:hincrby myhash age 5

hexists

    判断属性是否存在:hexists myhash username(存在返回1,不存在返回0)

hlen

    键值对的数量:hlen myhash

hkeys

    所有的键:hkeys myhash

hvals

    所有的值:hvals myhash


存储list
  • ArrayList使用数组方式
  • LinkedList使用双向链接方式
  • 双向链表中增加数据
  • 双向链表中删除数据
存储list常用命令
  • 两端添加
  • 查看列表
  • 两端弹出
  • 获取列表元素个数
  • 扩展命令

lpush

    从左端插入:lpush mylist 1 2 3

rpush

    从右端插入:rpush mylist a b c

lrange

    查看所有元素:lrange mylist 0 -1

lpop

    弹出最左端的元素:lpop mylist

rpop

    弹出最右端的元素:rpop mylist

llen

    列表中的元素个数:llen mylist

lpushx

    仅当list存在时才在左端插入,否则不插入:lpushx mylist x

rpushx

    仅当list存在时才在左端插入,否则不插入:rpushx mylist x

lrem

    删除x个y:lrem mylist x y(若x>0,则从左往右删除x个;若x小于0,则从右往左删除-x个;若x=0,则删除所有等于y的值)

lset

    修改值:lset mylist 3 mmm(将下标为3的元素设置为mmm)

linsert

    linsert mylist before x yy(在x的左边插入yy)
    linsert mylist after x yy(在x的右边插入yy)

rpoplpush

    rpoplpush list1 list2(将list1的右边弹出插入到list2的左边)

rpoplpush使用场景

存储Set
  • 和List类型不同的是,Set集合中不允许出现重复的元素
  • Set课包含的最大元素数量是4294967295。
存储set常用命令
  • 添加/删除元素
  • 获得集合中的元素
  • 集合中的差集运算
  • 集合中的交集运算
  • 集合中的并集运算
  • 扩展命令

sadd

    添加元素:sadd myset 1 2 3

srem

    删除元素:srem myset 1 2

smembers

    查看所有元素:smembers myset

sismember

    是否在集合中:sismember myset a(在集合中返回1,不在集合中返回0)

sdiff

    差集运算:sdiff mya1 myb1(mya1-myb1)

sinter

    交集运算:sinter mya1 myb1(mya1∩myb1)

sonion

    并集运算:sonion mya1 myb1(mya1∪myb1)

scard

    集合中元素个数:scard myset

srandmember

    随机返回一个元素:srandmember myset

sdiffstore

    sdiffstore my1 mya1 myb1(将mya1和myb1的差存到my1)

sinterstore

    sinterstore my1 mya1 myb1(将mya1和myb1的交集存到my1)

sunionstore

    sunionstore my1 mya1 myb1(将mya1和myb1的并集存到my1)


存储Set使用场景
  • 跟踪一些唯一性数据
  • 用于维护数据对象之间的关联关系

存储Sorted-Set
  • Sorted-Set和Set的区别
  • Sorted-Set中的成员在集合中的位置是有序的
存储Sorted-set常用命令
  • 添加元素
  • 获得元素
  • 删除元素
  • 范围查询
  • 扩展命令

zadd

    添加元素:zadd mysort 70 zs 80 ls(相同的会用新分数覆盖)

zscore

    查询分数:zscore mysort zs

zcard

    查询元素个数:zcard mysort

zrem

    删除元素:zrem mysort tom ww

zrange

    查询所有元素:zrange mysort 0 -1 (withscores)显示所有元素,并从小到大排列,withscores为显示分数。

zrevrange

    查询所有元素:zrevrange mysort 0 -1 (withscores)显示所有元素,并从大到小排列。

zrangebyscore

    按分数范围显示:zrangebyscore mysort 80 100 limit 0 2(只显示其中的两个)

zremrangebyrank

    按排名范围删除元素:zremrangebyrank mysort 0 4

zremrangebyscore

    按分数范围删除元素:zremrangebyscore mysort 80 100

zincrby

    给指定元素增加分数:zincrby mysort 3 zs

zcount

    统计分数范围的元素个数:zcount mysort 80 90


Sorted-Set使用场景
  • 如大型在线游戏积分排行榜
  • 构建索引数据

Redis的Keys的通用操作
查找所有的Key
keys *
查找特定前缀的Key
keys my?
删除key
del key1 key2 key3
判断key是否存在
exists key(存在返回1,不存在返回0)
重命名key
rename oldname newname
设置过期时间(单位:秒)
expire key 1000
查看key所剩时间
ttl key(若未设置过期时间,则返回-1)
获得指定key的类型
type key
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值