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逆序输出):

posted on 2020-02-03 15:02  阿尔托莉雅`潘德拉贡  阅读(177)  评论(0编辑  收藏  举报