0
点赞
收藏
分享

微信扫一扫

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


Redis的基本操作

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

切换数据库

切换数据库 格式:select index

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

查看数据库大小

查看数据库大小 格式:dbsize

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

 查看所有的keys

查看所有的key 格式:keys *

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

清除数据库

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

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

clear实现界面的清屏 

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

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

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

Redis五种基本类型

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

示例如下:

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

  • 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

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

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

exists

判断key是否存在 格式 exists key

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

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

append

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

格式:append key apendvalue

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

strlen

获取字符串的长度

格式:strlen key

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

incr decr

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

格式: incr key

对value值进行自减1操作

格式:decr key

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

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

incrby decrby

设置加减的步长

格式:incrby key num decrby key num

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

getrange

获取给定范围的字符串值

格式:getrange key start stop

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

setrange

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

格式:setrange key offset value

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

setex ttl

设置过期时间

格式: setex key seconds values

查看剩余时间

格式:ttl key

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

setnx

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

格式: setnx key value

(分布式锁经常使用)

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

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

mset mget

同时设置多个值

格式:mset key1 value1 key2 value2 ...

同时获取多个值

格式:mget key1 key ...

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

getset

先获取值在设置值

格式:getset key value

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

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

2、列表 list

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

应用场景:

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

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

lpush rpush lrange

从列表的左侧插入值

格式:lpush key value

从列表的右侧插入值

格式:rpush key value

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

格式:lrange key start stop

插入到左边示例:

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

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

lpop rpop

从列表的左侧移除值

格式:lpop key

从列表右侧移除值

格式:rpop key

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

lindex

获取指定下标的值

格式:lindex key index

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

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

llen

获取列表中元素的个数

格式:llen key

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

lrem

移除列表中的元素

格式:lrem key count value

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

ltrim

截取列表中的值

格式:ltrim key start stop

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

rpoplpush

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

格式:rpoplpush key1 key2

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

lset

根据下标替换列表中的值

格式:lset key index value

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

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

3、集合 set

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

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

应用场景:

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

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

sadd

在set集合中添加数据

格式:sadd key value

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

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

smembers

获取set集合中所有值

格式:smembers key

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

sismember

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

格式:sismember key value

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

scard

获取set中元素个数

格式:scard key

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

srem

删除set中元素

格式:srem key value

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

srandmember

从set中随机获取值

格式:srandmember key count

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

spop

随机删除指定的元素

格式:spop key [count]

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

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

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

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

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

hmset hmget

批量的插入和获取

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

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

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

hgetall

获取hash中所有的值

格式:hgetalll key

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

hdel

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

格式:hdel key field

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

hexitsts

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

格式:hexists key field

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

hkeys hvals

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

格式 :hkeys key /hvals key

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

hsetnx

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

格式:hsetnx key field value

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

5、有序集合 zset

应用场景:

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

zadd

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

格式:zadd key score member...

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

 zrange

按分数进行排序

格式:zrange key start stop

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

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

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

zrangebyscore

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

格式 zrangebyscore min max

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

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

zrem

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

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

zcard

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

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

zcount

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

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

举报

相关推荐

0 条评论