Redis的几大数据类型常用命令总结

来源:互联网 发布:adobe cs5 mac破解版 编辑:程序博客网 时间:2024/06/05 06:23

redis 默认有16个库,编号从0开始,0~15;
统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上;
redis的索引都是从0开始的;
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
1、key关键字

keys *  #查看当前库所有keyFLUSHDB  #删除当前库的所有keyFLUSHALL  #删除所有库的所有keyDBSIZE  #查看多少个keyEXIST k1 #判断k1是否存在move k1 2  #移动k1至2号库 (当前库就没了)ttl k1  #查看k1存活时间, -1:永久有效;-2:已过期(过期相当于删除,不在redis内存中了)DEL k1  #删除k1(相当于已过期)type k1  #查看k1的数据类型set k1 lbh # 赋值,如果k1里已存在值,再次设置会自动覆盖原有值

2、String类型
String是redis最基本的类型, 一个key对应一个value。 string类型是二进制安全的。意思是redis的string可以包含任何数据, 一个键最大能存储512MB。

1、append  #追加字符串(k1 原值为lbh)   append k1 123   #结果为6, k1的值为 lbh1232、strlen k1  #结果为6, 查看k1的长度3、incr k2  #k2的值必须为数字,否则报错,递增值1   incrby k2 3 #k2值递增3, 自己设定递增长度值   #decr 与 decrby 递减同理4、范围内取设值   getrange k1 0 -1  #取范围,(0 -1:取全部;0 3:取第0个字符到第3个字符)   setrange k1 0 xxx  #在第0个位置添加xxx, 设定在哪个位置加什么数值5、setex k3 10 v3  #设置k3的生存时间是10秒,值为v3   setnx k4 v4  #如果存在v4返回0,不存在返回16、mset k1 v1 k2 v2 k3 v3 k4 v4  #同时进行多值赋值   mget k1 k2 k3 k4   #取出多值7、msetnx k4 v4 k5 v5  # k4、k5如果都不存在返回1,说明设值成功,如果有一项存在返回0,说明设值失败   mget k4 k5   #取出多值   get k4   #取出单值

3、List 类型
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

1、 lpush list01 1 2 3 4 5   #创建集合list01 并添加元素 1 2 3 4 5      rpush list02 1 2 3 4 5   #创建集合list02 并添加元素 5 4 3 2 12、 lrange list01 0 -1   #获取list01 集合里的数据3、 lpop list01   #获取集合list01顶层元素 1    rpop list02   #获取集合list02底层元素 14、lindex list01 3  #获取集合list01第三号位的元素5、rpoplpush list01 list02   #将list01的顶层元素移入list02的顶层下标上6、lset list01 1 x   #将集合下标为1的元素值改为 x7、linsert list01 before x java  #在值为 x 的前面插入元素java   linsert list01 after x oracle  #在值为 x 的后面插入元素oracle

性能总结:
它是一个字符串链表,left、right 都可以插入添加:
如果键不存在,则创建新的链表;
如果值全移除,对应的键也就消失了;
链表的操作无论是头和尾效率都很高,但是假如对中间元素进行操作,效率有点底下。

4、Set类型
Redis的Set是string类型的无序、不重复集合。 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

1、sadd set01 1 2 3 4 5  1 2 3   #创建集合set01, 并添加元素 1 2 3 4 5 (自动去重)2、smembers set01   #查看set01 里的数据   scard set01  # 查看个数3、srem set01 3  #移除集合里值为 3 的数据4、srandmember set01 3  #随机输出3个数据5、spop set01 #随机出栈6、smove set01 set02 5 #将set01里的5 移动到set02里7、sdiff set01 set02  # set01 在 set02 中的差集   sinter set01 set02 # set01 和 set02 的交集   sunion set01 set02 # set01 和 set02 的并集

5、Hash类型

Hash 关键字是以 key value (key value) value 也是以键值对的形式存在的。

1、hset user id 201201036  #创建一个对象 user 属性为 id, 值为 201201036   hget user id   #获取 user 对象的 id 的属性值2、hmset account id 11 name lbh age 23 addr jinan  #创建account对象,添加属性id name age addr,值分别为:11 lbh 23 jinan   hmget account id name age addr3、hgetall account   #获取account 对象的属性和值4、hdel user id  # 删除 user 的属性 id5、hlen user  #获取对象user的个数6、hexists user  #判断对象user是否存在7、hkeys user #获取对象user的key的数据   hvals user #获取对象user的value的数据8、hincrby user id  #user 对象的 id属性 字加 1   hincrbyfloat account score 0.5  #account 对象的score属性自加 0.59、hsetnx account email  abc@163.com  # 如果不存在email属性 则返回 1,否则存在 返回 0

6、Zset (sored set) 集合
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2

1、zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5  #创建集合zset01 60 v1 ...2、zrange zset01 0 -1  #查看所有值: v1 v2 v3 v4 v5   zrange zset01 0 -1 withscores  #查看所有值包括 score 值3、zrangebyscore zset01 60 90  #查看score值范围在 60 到 90 之间的值   zrangebyscore zset01 60 (90 #查看score值范围在 60 到 90 之间的值(不包含90)   zrangebyscore zset01 60 90 limit 2 2  #查看score值范围在 60 到 90 之间从第二个截取2个值4、zrem zset01 v5 #移除v5的值5、zcard zset01  #统计值的数量6、zcount zset01 60 80 #统计60 到 80 之间的个数   zrank zset01 v4   #查看v4的下标   zscore zset01 v5  #查看v4的值7、zrevrank zset01 v4 #逆序后查看v4的值   zrevrange zset01 0 -1 #逆序查看范围   zrevrangebyscore zset01 90 60  #逆序查看score 值的范围
原创粉丝点击