02-数据类型
数据类型
redis支持的数据类型:
string,list,set, zset, hash, geo
操作string的常用命令有:
set、setnx、setrange、mset、getset
get、mget、getrange、incr、incrby、decr、decrby、strlen、append
操作hash的常用命令有:
hset,hsetnx、hmset、hincrby
hget、hexists、hlen、hdel、hkeys、hvals、hgetall
操作list的常用命令有:
lpush、rpush、lrange、linsert、lset、lrem、ltrim、lpop、rpop、rpuplpush、lindex、llen
操作set的常用命令有:
sadd、smembers、srem、spop、sdiff、sdiffstore、sinter、sunion、smove、sismember、srandmember
string
String 是最简单的类型,一个key对应一个Value, string类型是二进制安全的。
redis 的string可以包含
任何数据,比如一个图片或序列化对象
redis-cli
set name lisi
setnx name lisi # set no exist; 如果key已存在返回0,否则返回1
# 设置有效期
setex color 10 red

替换字符串
setrange key index replacement_value
set name abcdefghi
setrange name 2 AAA

一次设置多个值
成功返回1, 失败返回0;
mset k1 v1 k2 v2
msetnx k1 v1 k2 v2 #不会覆盖已经存在的key
getset
设置一个新的值并返回旧的值
mget
获取多个值
mget k1 k2 k3
getrange
获取子字符串
getrange k1 0 4
incr
递增

incrby
指定一个递增的值;可以是负数
decr
递减
decrby
递减指定的值;可以是负数
decrby key 1
strlen
查看字符串长度
strlen name
append
末尾追加内容
hash
redis hash 是一个string类型的field和value的映射表;
它的添加,删除操作都是O(1)(均摊);
hash 特别适合存储对象,相较于对象的每个字段存为单独的string类型,将一个对象存储在hash中会占用更少的内存并且可以更方便地存取整个对象;
hset
设置hash field为指定值,如果key不存在则先创建
hset user_001 name lisi age zhangsan addr chengdu
hget
hsetnx
为不存在的field设置值; 一次设置一个field
hmset
hsetrange
hincrby
hincry user_001 age
hexists
判断field在hash是否存在, 存在返回1; 否则返回0
hlen
返回hash中field的数量
hdel
删除指定hash的field
hkeys
返回hash中field列表
hvals
返回hash中value列表
hgetall
返回hash所有字段和值
list
list 是一个链表结构,主要功能是push pop, 获取一个范围内所有值等
操作中key理解为链表的名字
redis的list类型其实就是每一个子元素都是string类型的双向链表
我们可以通过push pop操作从链表的头部或尾部添加删除元素
list既可以作为站也可以作为队列
栈: push pop 队列:push remove
list push时先进入的在底部;后进入的在头部;
push
lpush 从链表的左边(头)压入
rpush 从链表的右边(尾)压入

lpush
lpush books java lpush books c lpush books js lpush books perl lpush books groovylrange list start stop
stop 指定为
-1时查询全部rpush
rpush words hello rpush words world
linsert
在指定元素前/后插入元素
linsert words before/after world good
lset
为指定下表元素赋值
lrem
从list中删除n个和value相同的元素;n<0 从尾部删除 n=0 删除全部value
ltrim
保留list中指定范围的元素, 其他的都删除
lpop rpop
lpop 从头弹出; rpop从尾弹出
lpush+lpop 栈
lpush+rpop 队列
rpoplpush
从第一个list尾弹出元素并将元素添加到第二个list的头部
lindex
返回指定下标的元素
lindex books 0
llen
返回list中元素的个数
sets 无序集合
Set 是集合, 是string类型的无序集合,集合中的元素不允许重复;
set是通过hashtable实现的;添加、删除、查找的复杂度都是O(1);
对于集合可以取并集、交集、差集
可以实现好友推荐(差集)、blog中的tag功能(交集)
sadd
向集合中添加元素;返回成功添加的数量
sadd myset ele1 sadd myset ele2 sadd myset ele1
smembers
查看集合中的元素
srem
从集合中删除指定的元素
srem setname ele
spop
从集合中随机弹出一个元素
sdiff
返回所有给定集合于第一个集合的差集
sdiff set1 set2 set3sdiffstore
将返回的差集存储到指定的集合
sdiffstore storageSet set1 set2 smsmebers storageSet
sinter
返回所有给定集合与第一个集合的交集
sinter set1 set2 set3sinterstore
将返回的交集存储到指定的结合 stroageSet2
sinterstore storageSet2 set1 set2
sunion
返回所有给定集合的并集
sunionstore
返回所有给定集合的并集并存储到指定的集合
sunionstore storageSet3 set1 set2 set3 smembers storageSet3
smove
从第一个集合中移除指定元素并添加到第二个集合中
# 将set2中的ele1移动到set3 smove set2 set3 ele1
sismember
判断元素是否属于指定集合的元素; 1 是, 0 否
sismember myset2 ele
srandmember
随机返回一个集合中的元素,但是不删除元素
srandmember myset
sorted sets
是set的一个升级版本,在set的基础上增加了一个顺序属性; 属性属性可以在添加、修改元素的时候指定
每次指定后会自动按照顺序重新调整顺序;
zadd
向集合中添加元素并指定顺序,如果元素存在则调整其顺序
# ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...] zadd sortset 1 value1
zrange
获取集合中指定范围的元素; withscores 选项用于返回顺序ASC
zrange sortset 0 -1 withscores
zrevrange
获取集合中指定范围的元素; withscores 选项用于返回顺序; DESC
zrem
从集合中删除指定的元素,忽略不存在的元素
ZREM key member [member ...]
zincrby
递增集合中元素的顺序值; increment 为负数可以递减
# Increments the score of member in the sorted set stored at key by increment ZINCRBY key increment member
zincrby sortset -1 value3 zincrby sortset 5 value5
zrank
返回元素在集合中的下标; 0 开始 ASC
ZRANK key member
zrevrank
返回元素在集合中的下标; 0 开始 DESC
zcount
Returns the number of elements in the sorted set at
keywith a score betweenminandmax.范围socre指定范围内的元素个数
ZCOUNT key minScore maxScore
zremrangebyrank
zremrangebyscore
Bitmaps
setbit
setbit key offset vlaue
bitcount
bitop
The
BITOPcommand supports four bitwise operations: AND, OR, XOR and NOT, thus the valid forms to call the command are:
BITOP AND destkey srckey1 srckey2 srckey3 ... srckeyNBITOP OR destkey srckey1 srckey2 srckey3 ... srckeyNBITOP XOR destkey srckey1 srckey2 srckey3 ... srckeyNBITOP NOT destkey srckey
HyperLogLog
pfadd
pfcount
pfmerge































浙公网安备 33010602011771号