码迷,mamicode.com
首页 > 其他好文 > 详细

redis 基本指令以及数据类型

时间:2020-02-03 16:14:52      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:pop   info   incr   exists   insert   不同的   内容   操作   移除   

redis的数据类型:

String(字符串)

string是redis最基本的类型,一个key对应一个value

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

一个redis中字符串value最多可以是512M

Hash(哈希,类似java里的Map)

redis hash 是一个键值对集合

redis hash 是一个string类型的field 和 value 的映射表,hash特别适合用于存储对象,类似Java里面的MAP<String,Object>

List (列表)

redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部或尾部,它的底层实际是个链表

Set (集合)

redis 的Set 是string类型的无序集合,它是通过HashTable实现的

Zset (sorted set:有序集合)

redis zset 和set 一样也是string类型元素集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。

redis正是通过分数来为集合中的成员进行从小到大的 排序。zset的成员是唯一的,但分数(score)却可以重复

redis常见数据类型操作命令:http://redisdoc.com/

redis的基本指令

redis是单进程的默认16个数据库,类似于数组,下标从0开始,一直到15,初始默认使用0号数据库。

技术图片

 select命令 可以切换数据库:

技术图片

 数据库之间不互通,例如我在0号库设置了一个键值对,切换到其他库之后并不适用:

技术图片

 Dbsize 查看当前数据库的key的数量:

技术图片

keys * 查看所有的key:

技术图片

keys k? 查看所有以k为开头并且键名长度为2的key:(一个?占一个位置

 技术图片

如果库中有键名为k22的key,则使用keys k?则找不到这条,需要使用k??:

技术图片

 flushdb:清空当前库

技术图片

fflushall:通杀全部库

技术图片

 统一的密码管理,16个库都是同样密码,要么都能进去,要么都进不去。

redis索引都是从0开始

redis 键(key)的基本操作指令:

keys * (查看当前库中所有的键)

exists 键名  (判断某个key是否存在),返回1表示key存在,返回0表示key不存在

技术图片

 move key db (将某个key移动到某个db)

技术图片

ttl key 查看还有多少秒过期,-1 表示永不过期,-2表示已过期

技术图片

 expire key 秒钟: 为给定的key设置过期时间

我们给k3设置10秒的存活时间,10秒过去后k3将会被自动删除

技术图片

type key 查看你的key是什么类型

技术图片

 del key 删除一个key

技术图片

 persist key 移除key的过期时间,key将长久保持

技术图片

 redis string 基本操作指令:

redis string 是单键单值的

set/get/del/append/strlen  (设置/获取值/删除/给value尾部增加值/获取value长度)

技术图片

 Incr/decr/incrby/decrby  (自增/自减/相加/相减)一定要是数字才能进行加减

技术图片

 技术图片

 技术图片

 技术图片

getrange/setrange (获取指定区间范围内的值,类似between ... and 的关系/设置指定区间范围内的值,格式是setrange key  值 value) 0到-1表示全部

技术图片

 技术图片

setex(set with expire)键秒值(设置key的时候顺便设置key的存活时间)/setnx(set if not exist,如果key不存在就创建,否则就不创建)

技术图片

 技术图片

mset/mget/msetnx(一次创建多个键值对/一次获取多个值/如果每个key都不存在,则创建,否则不创建)

技术图片

技术图片

技术图片

getset(先get再set)

技术图片

 redis 列表 基本操作指令:

单键多值

lpush/rpush/lrange (左添加 每一个value都添加到上一个value的左边 /右添加 每一个value都添加到上一个value的右边 /读取)

技术图片

 技术图片

 lpop/rpop (从左到右依次把value弹出/从右到左依次把value弹出)

技术图片

 技术图片

lindex,按照索引下标获得元素

技术图片

 llen 获得key对应的value的个数:

技术图片

 lrem key :

技术图片

 ltrim  key  开始index   结束index ,截取指定范围的值后再赋值给key:

技术图片

 rpoplpush 源列表 目的列表 (从源列表中rpop一个值然后lpush给目的列表):

技术图片

 lset key index value (把列表中某一个索引的值设置为另一个值)

技术图片

 linsert key before/after 值1 值2  给列表里的值1 前面/后面 插入值2

技术图片

list性能总结:

它是一个字符串链表,left,right都可以插入添加;

如果键不存在,创建新的链表;

如果键已存在,新增内容;

如果值全移除,对应的键也就消失了。

链表的操作无论是头或者尾效率都极高,但假如是对中间元素进行操作,效率就很低了。

redis集合(set):

单键多值

sadd/smembers/sismember (添加一个集合 集合名 值 /显示集合所有的值/判断一个值是否在集合里面)

技术图片

 scard (获取集合里面的元素个数)

技术图片

 srem key value 删除集合中的元素

技术图片

 srandmember key 某个整数(随机出几个数,不输入的话,默认出一个数)

技术图片

 spop key (随机出栈)

技术图片

 技术图片

 smove key1 key2 在key1里某个值 (作用是将key1里的某个值移动到key2)

技术图片

 数学集合类(差集:sdiff;交集:sinter;并集:sunion)

技术图片

 sdiff 类似与求01集合与02集合的不同元素,01集合在前,02集合在后,则求出来的是01集合中与02集合不同的元素,反之亦然。

技术图片

 sinter求集合之间的交集,即求出多个集合中相同的元素。

技术图片

 sunion 求集合之间的并集,如上例,即求出set01集合与set02集合中所有的元素并不重复的输出。

redis哈希(Hash):

kv模式不变,但v是一个键值对:

hset/hget/hmset/hmget/hgetall/hdel

技术图片

技术图片

技术图片

技术图片

 技术图片

 

 技术图片

hlen 获得哈希的键值对个数

 技术图片

 hexists key 判断在key里面的某个值的key有没有,有则输出1,没有则返回0:

技术图片

 hkeys/hvals (获得一个哈希key中所有的key/values):

技术图片

 hincrby N/hincrbyfloat N(使哈希key中的一个key自增N)

技术图片

 

 技术图片

 hsetnx key (输入一个哈希key,如果不存在,则成功,返回1,如果已经存在,则失败,返回0):

技术图片

 

 有序集合Zset(sorted set)

它就是在set的基础上加一个score值。

之前set是k1 v1  v2 v3

现在Zset就是k1 score1 v1 score2 v2。。。

然后就是它的一些基本指令:

zadd/zrange

技术图片

 

zrangebyscore key 开始score 结束score

技术图片

 

 zrem key 某score下对应的value值,作用是 删除元素技术图片

 

 zcard/zcount key score区间 /zrank key values值

 技术图片

 

 zrevrank key values值 作用是逆序获得下标值

技术图片

 

 zrevrange key 开始序列 结束序列 (把有序集合逆序输出):

技术图片

 

 zrevrangebyscore key 开始score 结束score(作用是将score对应的value逆序输出):

技术图片

redis 基本指令以及数据类型

标签:pop   info   incr   exists   insert   不同的   内容   操作   移除   

原文地址:https://www.cnblogs.com/wanghaoyu666/p/12168144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!