专栏名称: java那些事
分享java开发中常用的技术,分享软件开发中各种新技术的应用方法。每天推送java技术相关或者互联网相关文章。关注“java那些事”,让自己做一个潮流的java技术人!《java程序员由笨鸟到菜鸟》系列文章火热更新中。
目录
相关文章推荐
芋道源码  ·  阿里这款多级缓存框架一定要掌握,非常不错! ·  6 小时前  
芋道源码  ·  Java面试,问八股文的面试官水平很次? ·  昨天  
Java编程精选  ·  阿里员工吐槽:80%以上的leader认为, ... ·  3 天前  
芋道源码  ·  别乱分层,PO、VO、DAO、BO、DTO、 ... ·  2 天前  
51好读  ›  专栏  ›  java那些事

分布式缓存技术redis系列(二)详细讲解redis数据结构(内存模型)以及常用命令

java那些事  · 公众号  · Java  · 2018-12-06 18:33

正文

请到「今天看啥」查看全文


.129 :6379 > incr age

( integer ) 21

192 .168 .2 .129 :6379 > set age1 "20"

OK

192 .168 .2 .129 :6379 > get age1

"20"

192 .168 .2 .129 :6379 > incr age1

( integer ) 21

192 .168 .2 .129 :6379 > incrby age 3

( integer ) 24

从上面的结果可以看出,我们对int型的age和string型的age1都能进行incr操作时,

实际上type=string代表value存储的是一个普通字符串,那么对应的encoding可以是raw或者是int,如果是int则代表实际redis内部是按数值型类存储和表示这个字符串的,当然前提是这个字符串本身可以用数值表示,比如"20"这样的字符串,当遇到incr、decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int。如果你试图对name进行incr操作则报错。

192.168 . 2.129 : 6379 > incr name

(error) ERR value is not an integer or out of range

(5)decr && decrby——decr对key对应的值进行减减操作,并返回新的值;decrby减指定值

192 .168 .2 .129 :6379 > decr age

( integer ) 23

192 .168 .2 .129 :6379 > decrby age 3

( integer ) 20

192 .168 .2 .129 :6379 >

(6)其他命令

Hash类型

Hash是一个String类型的field和value之间的映射表,即redis的Hash数据类型的key(hash表名称)对应的value实际的内部存储结构为一个HashMap,因此Hash特别适合存储对象。相对于把一个对象的每个属性存储为String类型,将整个对象存储在Hash类型中会占用更少内存。

Hash 数据类型内部结构示意图

当前HashMap的实现有两种方式:当HashMap的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,这时对应的value的redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht。

应用场景

用一个对象来存储用户信息,商品信息,订单信息等等。

常用命令

(1)hset——设置key对应的HashMap中的field的value

(2)hget——获取key对应的HashMap中的field的value

192 .168 .2 .129 :6379 > hset myhash name zhangsan

( integer ) 1

192 .168 .2 .129 :6379 > hset myhash age 20

( integer ) 1

192 .168 .2 .129 :6379 > hget myhash name

" zhangsan "

192 .168 .2 .129 :6379 > hget myhash age

"20"

192 .168 .2 .129 :6379 >

(3)hgetall——获取key对应的HashMap中的所有field的value

192 .168 .2 .129 :6379 > hgetall myhash

1) " name "

2) " zhangsan "

3) " age






请到「今天看啥」查看全文