redis数据结构和内部编码:
127.0.0.1:10179> set test1 2
OK
127.0.0.1:10179> object encoding test1
"int"
127.0.0.1:10179> type test1
string
127.0.0.1:10179>
object enconding 查看内部编码
type 查看外部数据结构
内部编码和外部数据结构这种设计,可以随意改进内部编码,不会影响外部结构。【类似于面向接口概念】
RedisObject实例讲解:
Redis数据类型-字符:
•Redis一共分为五种基本数据类型:String、Hash、List、Set、Zset.
•内部编码有三种,raw,embstr,int
• String 是二进制的。可以存储序列化对象,图片,字符串,数值等
• set和get方法
• 设置值 set key value, 取值 get key
• 删除值 del key
• setnx(not exists)
• name 如果不存在进行设置,存在就不需要进行设置了,返回0
• setex(expired)/psetex(毫秒单位)
• set key 10 value 设置key有效期为10秒,10秒后返回nil
• setrange
• setrange key index value (index 表示从第几位开始替换)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
127.0.0.1:10179> set str 1234567
OK
127.0.0.1:10179> get str
"1234567"
127.0.0.1:10179> type str
string
127.0.0.1:10179> object encoding str
"int"
127.0.0.1:10179>
-------------------------------------------------------------------
127.0.0.1:10179> set str "hello cc"
OK
127.0.0.1:10179> get str
"hello cc"
127.0.0.1:10179> type str
string
127.0.0.1:10179> object encoding str
"embstr"
127.0.0.1:10179>
---------------------------------------------------------------------
127.0.0.1:10179> set str "hello cc aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
OK
127.0.0.1:10179> get str
"hello cc aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
127.0.0.1:10179> type str
string
127.0.0.1:10179> object encoding str
"raw"
127.0.0.1:10179>
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
•使用一次性设置多个和获取多个值的mset、mget方法:
•mset key1 value1 key2 value2 key3 value3
•mget key1 key2 key3
•msetnx
•一次性设置和取值的getset方法
•set key value
•getset key value1 设置新值返回原来的值
•incr和decr方法:对某一个值进行递增和递减
•incrby和decrby方法:对某个值进行指定长度的递增和递减
•append [name]方法:字符串追加方法
•strlen [name]方法:获取字符串的长度
Redis数据类型-HASH:
•Hash类型是String类型的field和value的映射表,或者说一个String集合。它的特别适合存储对象,相比较而言,将一
个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。
•形如:hset key field value(含义是 hset是hash集合, key是集合名字 field是字段名 value为其值)使用hget
key field 获取内容,也可以存储多个值。
•hmset可以进行批量存储多个键值对:hmset key field1 value1 field2 value2,也可使用hmget进行批量
获取多个键值对。
•同样也有hsetnx,和setnx大同小异。
•hincrby集合递增。
•hexists 是否存在key 如果存在返回 不存在返回0
•hlen 返回hash集合里的所有的键数值
•hdel 删除指定hash的field
•hkeys 返回hash里所有的字段
•hvals 返回hash的所有value
•hgetall 返回hash里所有的key和value
------------------------------------------------------------------------------------------------------------------------------------------------------------------
127.0.0.1:10179> hmset user:1 name cc age 18 sex 0
OK
127.0.0.1:10179> type user:1
hash
127.0.0.1:10179> object encoding user:1
"ziplist"
127.0.0.1:10179> hmset user:2 info "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
OK
127.0.0.1:10179> object encoding user:2
"hashtable"
127.0.0.1:10179> object encoding user:2
"hashtable"
127.0.0.1:10179> hget user:1 name
"cc"
127.0.0.1:10179> hget user:1 age
"18"
127.0.0.1:10179> hget user:1 sex
"0"
------------------------------------------------------------------------------------------------------------------------------------------------------------------