Redis篇2-五大数据类型
redis支持string、list、set、zset和hash五大数据类型,但是他们的操作语法不一致..以下粗略过一遍。
String类型(字符串)
简单说明
- 最基本的数据类型,和Memcached一样
- 单值单value,类比Java的Map<String, String>。
- 二进制安全的,redis的string可以包含任意字符串数据,比如jpg图片内容和序列化的对象都可以。
- 理论上,redis的string的value可以很大,最多512M。
常用操作
set key value定义/覆盖一个字符串键值get key获取键的字符串值del key删除键值appen key value值appendstrlen key值的长度exists key判断某个key是否存在move key n将当前库的key迁移到n号数据库expire key n给key设置过期时间为n秒
过期之后get key和keys *就看不到了,相当于删掉了ttl kyc查看目标key还有多久过期
-1代表永不过期(默认),-2代表已过期type key查看键的类型,比如stringincr key对值进行+1,只对数字型的值有效decr key对值进行-1,只对数字型的值有效incrby key n对值进行+n,只对数字型的值有效decrby key n对值进行-n,只对数字型的值有效getrange key 0 3获取指定区间的值(前4个字符),即substr,getrange key 0 -1表示获取全部setrange key ..设置指定区间的值setex key n value定义一个键值且同时设置好过期时间(n为秒值)setnx key value如果键不存在才创建,即set if not exist,避免覆盖- mset/mget/msetnx 同时定义/获取多个键值
mset k1 v1 k2 v2 k3 v3 mget k1 k2 k3 msetnx k3 v3 k4 v4 #注:k3已存在,本次失败,k4也不会创建 - ...
List类型(列表)
简单说明
- 单值多value,类比Java的Map<string, List>
- 是一个字符串链表,左右两边都可以操作
- 如果键不存在,新建链表,存在则追加元素
- 如果值的多个value全部被移除,对应的键自动移除
常用操作
- lpush/rpush/lrange 定义和获取一个list键值
lpush l1 v4 v3 v2 v1 #从左push rpush l1 v5 v6 v7 v8 #从右push lrange l1 0 -1 #获取l1值 lrange l1 0 4 #范围获取l1值 - lpop/rpop key 从从左/右边出栈(pull掉并返回)
llen key列表元素个数lindex key value类比String的indexOf函数- ...
Set类型(无序去重列表)
简单说明
- 和List差别不大,单值多value,类比Java的Map<String, Set>
- 无序无重复,底层是Hashtable
常用操作
- sadd key values .. 定义Set键值
- smembers key 遍历set键值
- sismember key value 判断是否有某值
madd s1 1 2 3 2 3 smembers s1 sismember s1 1 sismember s1 x scard keyset集合元素个数srem key value移除某个valuespop key随机一个出栈srandmember key n随机n个出栈- ...
Zset类型(有序集合)
简单说明
- 即Sorted Set,和Set一样,无序无重复,类比Java的Map<String, ScoreSet>
- 会给每个元素关联一个double类型的分数score
- zset成员元素不能重复,而这个score可以重复
- 排序即通过每个成员的score值从小到大排的
- 多用于一些统计场景
常用操作
- zadd/zrange
zadd z01 60 C 70 B 80 A 90 S
zrange z01 0 -1
zrange z01 0 -1 withscores
- ...
Hash类型(散列)
简单说明
- 单值多value,类比Java中的
Map<String,<String, Object> - 可以当作是在redis中进行Java对象的定义
常用操作
- hset/hget/hmset/hmget/hgetall/hdel 定义,获取,删除
hset user0 id 1 nane hwc1
hget user0 id
hgetall user0
hdel user0 id
hlen key“对象的属性”个数hexists key0 key1是否存在某个“属性”hkeys/hvals key0遍历“对象”属性/值- ...

浙公网安备 33010602011771号