初识redis

命令

keys * 查看所用键
dbsize 键的总数
exists key 检查键是否存在
del key [key …] 删除(支持多个键)
expire key secodes 设置键过期的时间
ttl key 返回键过期剩余的时间(返回大于0:剩余时间,-1:没设置,-2:键不存在)
type key 查看数据类型(如果键不存在返回none)
以上命令都是全局命令。


虽然redis的存储形式是以key-value的形式存在的。在redis中支持五种数据类型:string,hash,队列,集合,有序集合。

字符串
字符串类型是redis最基础的数据类型。可以使简单字符串、复杂字符串(json,xml),数字,二进制(图片,音频,视频),但是最大值不能超过521MB。
常用命令:
- 设置值
set key value [ex seconds] [ps milliseconds] [nx|xx]
ex seconds:为键设置过期时间(单位是秒)
px milliseconds : 为键设置过期时间(单位是毫秒)
nx:键必须不存在才能设置成功,用于添加
xx:键存在时才能设置成功,用于更新
- 获取值
get key
3.批量设置值
mset key value [key value …]
4.批量获取值
mget key [key …]
- 计数
incr key 每次查询结果加1 (oracle中的序列)
值如果不是整数返回错误
值为整数是返回自增结果
键不存在按0自增
除incr外还有decr(自减)
内部编码:
字符串类型的内部编码有3种:
- int:8个字节的长整型
- embstr: 小于等于39个字节的字符串
- raw:大于39个字节的字符串

哈希
哈希类型的值是以键值对的形式存在。
命令:
hset key field value 设置值
这里写图片描述
hget key field 获取值
这里写图片描述
hdel key field [field] 删除field的值
这里写图片描述
批量获取field-value值
hmset key field value [field value ….]
hmget key field [field…]
这里写图片描述
hexists key field 判断field是否存在
这里写图片描述
hkeys key 获取所用field
这里写图片描述
hvals key 获取所用value
这里写图片描述
hgetall key 获取所用field-value
这里写图片描述

内部编码:
哈希类型每部编码有两种:
- ziplist : 当元素个数小于521个并且所有的值都小于64个字节。
- hashtable: 值大于64个字节或者元素的个数大于512个

列表(list)
列表的特点:1 列表中的元素是有序的。可以通过下标获取某个元素 ; 2 列表中的元素可以重复。
命令:
rpush key value [value … ] 从右边插入元素
lpush key value [value … ] 从左边插入元素
linsert key before|after pivot(list中某个元素) value 向某个元素前|后插入元素

lrange key start end 获取指定范围内的元素列表。
lrange key 0 -1 获取所有
lindex key index 获取指定下表元素
llen key 获取列表长度

rpop key 从右侧弹出元素(删除最右边的)
lpop key 从左测弹出元素(删除最左边的)
lrem key count value 从列表中找到等于value的元素进行删除。
- count>0 从左到右,删除最多count个元素
- count<0 从右到左,删除最多count绝对值个元素。
- count = 0 ,删除所有元素。
ltrim key start end 只保留下标start 到end的元素
lset key index newvalue 修改指定下标元素
brpop key [key…] timeout 阻塞式弹出

内部编码:
- ziplist:当元素个数小于521个并且所有的值都小于64个字节。
- linkedlist:元素个数大于512或值大于64个字节。
应用:
- lpush + lpop : 栈
- lpush + rpop: 队列
- lpush + ltrim: 有限集合
- lpush + brpop: 消息队列

集合(set)
命令:
sadd key element [element….] 添加元素
srem key element [element…] 删除元素
scard key 计算元素个数
sismember key element 判断元素是否在集合中
srandmember key [count] 随机返回指定个元素
spop key 随机弹出元素
smembers key 获取所用元素
这里写图片描述

集合间的操作:
sinter key [key …] 求多个集合的交集
sunion key [key…] 求多个集合的并集
sdiff key [key…] 求多个集合的差集

内部编码:
- intset: 集合中的元素都是整数且元素个数小于512个
- hashtable : 当元素不是整数或元素个数大于512个

有序集合
zadd key score member [score member] 添加成员
这里写图片描述
zcard key 计算成员个数
这里写图片描述
zscore key member 计算成员分数
这里写图片描述
zrank key member 计算成员排名(从底到高)
zrevrank key member 计算成员排名 (从高到低)
这里写图片描述
zrem key member 删除成员
zincrby key increment member 增加成员分数
这里写图片描述
内部编码:
- ziplist: 当元素个数小于521个并且所有的值都小于64个字节。
- skiplist: 元素个数大于512或值大于64个字节。

数据结构是否能重复是否有序有序实现方式
列表索引下标
集合
有序集合分值
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值