Redis系列学习2-五大类型(String,List,Hash,Set,ZSet)及其常规操作

Redis的基本操作

Redis默认是有16个数据库,默认使用的是第0个数据库,可以通过select 切换数据库,Redis的命令大小写不敏感的

切换数据库

切换数据库 格式:select index


查看数据库大小

查看数据库大小 格式:dbsize


查看所有的keys

查看所有的key 格式:keys *


清除数据库

清空当前的数据库 格式:flushdb
清空所有的数据库 格式:flushall

clear实现界面的清屏 

如果报错:(error) NOAUTH Authentication required.

说明验证出了问题,重新进行验证即可,方式是输入auth

Redis五种基本类型

Redis键命令的基本语法: COMMAND KEY_NAME

示例如下:

  • SET 设置key
  • GET 查看key对应值
  • EXPIRE 设置key的过期时间
  • TTL 查看key剩余时间
  • EXISTS 判断当前key是否存在
  • KEYS * 查看所有的key
  • DEL 删除当前key
  • TYPE 查看key存储的value类型

1.字符串

应用场景:

计数器(分散数、统计数)

通常来保存单个字符串或者JSON字符串数据(短信验证码)

set get

设置值 格式:set key value

获取值 格式:get key

key值已存在的情况下,set同一key会覆盖掉原值,get一个不存在的key会返回nil 

exists

判断key是否存在 格式 exists key

存在返回1,不存在返回0

append

追加字符串,如果key不存在,相当于是set命令

格式:append key apendvalue

strlen

获取字符串的长度

格式:strlen key

incr decr

对value值进行自增1操作(如果key不存在,会被初始化为0)

格式: incr key

对value值进行自减1操作

格式:decr key

若key不存在,则初始化为0

incrby decrby

设置加减的步长

格式:incrby key num decrby key num

getrange

获取给定范围的字符串值

格式:getrange key start stop

setrange

从指定的位置开始替换字符串的值

格式:setrange key offset value

setex ttl

设置过期时间

格式: setex key seconds values

查看剩余时间

格式:ttl key

setnx

setnx(set if not exists) 如果指定的key不存在则设置,存在的失败

格式: setnx key value

(分布式锁经常使用)

如果key存在,则创建失败。 

mset mget

同时设置多个值

格式:mset key1 value1 key2 value2 ...

同时获取多个值

格式:mget key1 key ...

getset

先获取值在设置值

格式:getset key value

如果原值不存在,则返回nil,若存在先获取值,然后更改新值,其实原理相当于++i的操作。

2、列表 list

类似于linkedlist链表结构,可以添加元素到列表的头部或者是尾部,同样头部和尾部都可以进行获取,可以用来作为栈、队列、阻塞队列

应用场景:

对数据量大的集合进行删减

列表数据显示:评论列表、关注列表、留言列表

lpush rpush lrange

从列表的左侧插入值

格式:lpush key value

从列表的右侧插入值

格式:rpush key value

从列表中获取指定范围的值

格式:lrange key start stop

插入到左边示例:

lpop rpop

从列表的左侧移除值

格式:lpop key

从列表右侧移除值

格式:rpop key

lindex

获取指定下标的值

格式:lindex key index

超过索引的位置就会返回nil

llen

获取列表中元素的个数

格式:llen key

lrem

移除列表中的元素

格式:lrem key count value

ltrim

截取列表中的值

格式:ltrim key start stop

rpoplpush

移除A列表中最后一个元素,将他添加到另一个B列表中

格式:rpoplpush key1 key2

lset

根据下标替换列表中的值

格式:lset key index value

list底层是一个链表,在链表插入或者改动值,效率高,中间位置来修改,相对效率低一些

3、集合 set

set中元素不能重复,唯一的

set实现是基于哈希表结构实现,在修改、添加等操作复杂度是O(1)

应用场景:

利用唯一性:可以统计访问网站的所有独立的ip

对集合间进行求交集、并集、差集 方便实现共同关注,共同喜欢,共同好友

sadd

在set集合中添加数据

格式:sadd key value

添加重复值时就会添加失败

smembers

获取set集合中所有值

格式:smembers key

sismember

判断某个值是否在set中,在返回1,不在返回0

格式:sismember key value

scard

获取set中元素个数

格式:scard key

srem

删除set中元素

格式:srem key value

srandmember

从set中随机获取值

格式:srandmember key count

spop

随机删除指定的元素

格式:spop key [count]

应用:求差集(sdiff),并集(sunion),交集(sinter)

4、哈希 hash

hash是一个map集合,是key-value的map集合

应用场景:

hash中存储经常变更的对象,比如用户信息: user :name-value age-value ,set-value

hash适合存储对象 ,String适合存储字符串

hset hget

插入和获取哈希的值 hset key field value /hget key field

hmset hmget

批量的插入和获取

格式:hmset key field1 value1 field2 value2 ....

获取格式: hmget key field1 field2 ...

hgetall

获取hash中所有的值

格式:hgetalll key

hdel

删除指定的filed 的哈希键值对

格式:hdel key field

hexitsts

判断哈数中字段是否存在,存在返回1,不存在返回0 

格式:hexists key field

hkeys hvals

获取哈数中所有字段或者值

格式 :hkeys key /hvals key

hsetnx

如果存在,则失败,如果不存在,则添加成功

格式:hsetnx key field value

5、有序集合 zset

应用场景:

对于需要排序的场景下可以使用zset. e比如微博的实时新闻可以以发表时间作为score来存储,获取时就自动按时间来排好序

zadd

向有序集合添加一个或多个成员,或者更新已存在成员的分数

格式:zadd key score member...

 zrange

按分数进行排序

格式:zrange key start stop

zrange key start stop withscores (同时显示分数zrange)

zrangebyscore

将zset中的值按照从小到大排序数据

格式 zrangebyscore min max

由负无穷到正无穷进行排序,也就是从小到大进行排序。

zrem

删除zset中指定的元素 格式:zrem key value

zcard

查看zset集合中元素的个数 格式:zcard key

zcount

根据score的值来统计给定区间的元素的个数 格式:zcount key min max

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值