常用数据类型
15 分钟阅读
•
1061 字
+
1741 词
bash
#数据库的切换
select index #index是数据库的编号
#查看key值
keys *
#删除key
del key
#清空当前数据库
flushdb
#清空所有数据库
flushall
#将某个key值移动到另外数据库
move key db #db目标数据库的下标
#设置key值的过期时间,
expire key second #second过期的时间
#查看剩余的有效时间,-1表示永不过期 -2表示已经过期
ttl key
5、常用数据类型
| 类型 | 简介 | 特性 | 场景 |
|---|---|---|---|
| String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M |
|
| Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
| List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列 |
| Set(集合) | 哈希表实现,元素不重复 | 1、添加、删除、查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
| Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、带权重的消息队列 |
1、string数据类型
bash
#设置与获取
set key value
get key
#设置与获取多个key
mset k1 value1 k2 value2...
mget k1 k2 ...
#获取子串
GETRANGE key start end #start开始的下标的位置0开始,end结束的下标的位置 -1代表倒数第一个
#设置字符串
SETRANGE k2 offset value #从offset的位置开始,字符串被设置为value值
#设置与获取同时执行的命令
getset key newValue #获取oldValue,并且设置key的newValue
#设置key的新值为value,同时设置过期时间为seconds
setex key seconds value
#对key中的value是数值类型的,可以进行累加
incr key #每次增加单位1
incrby key num #增加num大小
SETNX key value
#含义(setnx = SET if Not eXists):
#将 key 的值设为 value ,当且仅当 key 不存在。
#若给定的 key 已经存在,则 SETNX 不做任何动作。
#SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。
#返回值:设置成功,返回 1 。设置失败,返回 0 。
#同时设置setnx和过期时间
set key value ex 100 nx
127.0.0.1:6379> set k1 hello\\0wuhan #不会截断\0后面的字符串
OK
127.0.0.1:6379> get k1
"hello\\\\0wuhan"
127.0.0.1:6379> set k2 hello\0hhh
OK
127.0.0.1:6379> get k2
"hello\\0hhh"
127.0.0.1:6379>
2、list数据类型
bash
#list只有左边与右边的区别
lpush/rpush key value1 value2
lpop/rpop key
#遍历的方法
lrange key start stop #获取指定范围的元素,start就是从下标为0开始
#redis中的list支持下标访问(STL中的list也是双向链表,但是不支持下标访问)
lset key index newValue #index就是下标的含义。
#获取指定下标的值
lindex mylist index #index还是下标的含义
#删除count个value
lrem mylist count value
#修剪命令,将修剪下标范围以外的数据删除掉,只留下下标范围内的数据
LTRIM mylist 0 5
#在某个元素的前后增加一个元素
LINSERT key before/after value newValue
LINSERT mylist before 4 1000
3、set数据类型
bash
#添加元素
sadd myset value1 value2 value3 ...
scard key #获取set的成员数
#遍历
smembers key
#随机选取几个元素
srandmember key num #随机选择num个元素,但是元素还在集合set中
spop key num #随机删除num个元素
srem key member 移除
sismember key member #判断member元素是否是集合key的成员
smove source destination member #将member元素从source集合移动到destination集合
srem key value #删除集合中值为value的元素
#取差集/交集/并集
SDIFF/SINTER/SUNION key1 key2
4、sort set(zset)数据类型
bash
#添加元素
zadd key double1 value1 double2 value2 double value3 ....
zadd myzset 10 h 30 j 20 w
zcard key #获取zset的成员数
#计算在有序集合中指定区间分数的成员数目
ZCOUNT myzset -inf +inf #-inf,负无穷 +inf,正无穷
zrevrange key start stop #从大道小返回索引区间 (递减) 0 -1 -1代表最后一个成员
ZRANGE key start stop [WITHSCORES] #通过索引区间返回有序集合指定区间内的成员
ZRANGEBYLEX key min max [LIMIT offset count] #通过字典区间返回有序集合的成员(分数要一致)
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] #通过分数返回有序集合指定区间内的成员
ZSCORE key member #返回有序集中,成员的分数值
ZREVRANGEBYSCORE key max min [WITHSCORES] #返回有序集中指定分数区间内的成员,分数从高到低排序
5、hash数据类型
#添加元素与获取元素
hset key field value
hget key field
#一次添加或者获取多个元素
hmset key field1 value1 field2 value2 ...
hmset people name h3rwau sex man age 90
hmget key field1 field2 ...
hmget people name sex age