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

image

替换字符串

setrange key index replacement_value

set name abcdefghi

setrange name 2 AAA

image

一次设置多个值

成功返回1, 失败返回0;

mset k1 v1 k2 v2

image

msetnx k1 v1 k2 v2 #不会覆盖已经存在的key

getset

设置一个新的值并返回旧的值

mget

获取多个值

mget k1 k2 k3

getrange

获取子字符串

getrange k1 0 4

incr

递增

image

incrby

指定一个递增的值;可以是负数

image

decr

递减

decrby

递减指定的值;可以是负数

decrby key 1

strlen

查看字符串长度

strlen name

append

末尾追加内容

image

hash

redis hash 是一个string类型的field和value的映射表;

它的添加,删除操作都是O(1)(均摊);

hash 特别适合存储对象,相较于对象的每个字段存为单独的string类型,将一个对象存储在hash中会占用更少的内存并且可以更方便地存取整个对象;

hset

设置hash field为指定值,如果key不存在则先创建

hset user_001 name lisi age zhangsan addr chengdu

image

hget

hsetnx

为不存在的field设置值; 一次设置一个field

image


hmset

hsetrange

hincrby

hincry user_001 age

hexists

判断field在hash是否存在, 存在返回1; 否则返回0

image

hlen

返回hash中field的数量

image

hdel

删除指定hash的field

image

hkeys

返回hash中field列表

image

hvals

返回hash中value列表

image

hgetall

返回hash所有字段和值

image

list

list 是一个链表结构,主要功能是push pop, 获取一个范围内所有值等

操作中key理解为链表的名字

redis的list类型其实就是每一个子元素都是string类型的双向链表

我们可以通过push pop操作从链表的头部或尾部添加删除元素

list既可以作为站也可以作为队列

栈: push pop 队列:push remove

list push时先进入的在底部;后进入的在头部;

push

lpush 从链表的左边(头)压入

rpush 从链表的右边(尾)压入

image

lpush

lpush books java
lpush books c
lpush books js
lpush books perl
lpush books groovy

lrange list start stop

image

stop 指定为-1时查询全部

rpush

rpush words hello
rpush words world

image

linsert

在指定元素前/后插入元素

linsert words before/after world good

image

lset

为指定下表元素赋值

image

lrem

从list中删除n个和value相同的元素;n<0 从尾部删除 n=0 删除全部value

ltrim

保留list中指定范围的元素, 其他的都删除

image

lpop rpop

lpop 从头弹出; rpop从尾弹出

lpush+lpop 栈

lpush+rpop 队列

rpoplpush

从第一个list尾弹出元素并将元素添加到第二个list的头部

image

lindex

返回指定下标的元素

lindex books 0

image

llen

返回list中元素的个数

sets 无序集合

Set 是集合, 是string类型的无序集合,集合中的元素不允许重复;

set是通过hashtable实现的;添加、删除、查找的复杂度都是O(1);

对于集合可以取并集、交集、差集

可以实现好友推荐(差集)、blog中的tag功能(交集)

sadd

向集合中添加元素;返回成功添加的数量

sadd myset ele1
sadd myset ele2
sadd myset ele1

image

smembers

查看集合中的元素

image

srem

从集合中删除指定的元素

srem setname ele

spop

从集合中随机弹出一个元素

image

sdiff

返回所有给定集合于第一个集合的差集

sdiff set1 set2 set3

sdiffstore

将返回的差集存储到指定的集合

sdiffstore storageSet set1 set2
smsmebers storageSet

sinter

返回所有给定集合与第一个集合的交集

sinter set1 set2 set3

sinterstore

将返回的交集存储到指定的结合 stroageSet2

sinterstore storageSet2 set1 set2

sunion

返回所有给定集合的并集

sunionstore

返回所有给定集合的并集并存储到指定的集合

sunionstore storageSet3 set1 set2 set3
smembers storageSet3

smove

从第一个集合中移除指定元素并添加到第二个集合中

# 将set2中的ele1移动到set3
smove set2 set3 ele1

image

sismember

判断元素是否属于指定集合的元素; 1 是, 0 否

sismember myset2 ele

image

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

image

zrevrange

获取集合中指定范围的元素; withscores 选项用于返回顺序; DESC

zrem

从集合中删除指定的元素,忽略不存在的元素

ZREM key member [member ...]

image

zincrby

递增集合中元素的顺序值; increment 为负数可以递减

# Increments the score of member in the sorted set stored at key by increment
ZINCRBY key increment member

image

zincrby sortset -1 value3
zincrby sortset 5 value5

image

zrank

返回元素在集合中的下标; 0 开始 ASC

ZRANK key member

image

zrevrank

返回元素在集合中的下标; 0 开始 DESC

image

zcount

Returns the number of elements in the sorted set at key with a score between min and max.

范围socre指定范围内的元素个数

ZCOUNT key minScore maxScore

image

zremrangebyrank

zremrangebyscore

Bitmaps

setbit

setbit key offset vlaue

bitcount

bitop

The BITOP command supports four bitwise operations: AND, OR, XOR and NOT, thus the valid forms to call the command are:

  • BITOP AND destkey srckey1 srckey2 srckey3 ... srckeyN
  • BITOP OR destkey srckey1 srckey2 srckey3 ... srckeyN
  • BITOP XOR destkey srckey1 srckey2 srckey3 ... srckeyN
  • BITOP NOT destkey srckey

HyperLogLog

pfadd

pfcount

pfmerge

Geospatial

posted @ 2024-04-20 12:55  Dreamsrj  阅读(7)  评论(0)    收藏  举报