您的位置:首页 > 理论基础 > 数据结构算法

Redis数据结构和内部编码--字符串

2017-06-30 01:36 375 查看

Redis数据结构和内部编码--字符串

一.概念
   字符串类型是redis的基础数据类型。首先,键都是字符串类型。字符串类型的值可以是字符串(简单字符串或者JSON/XML)、数值(整数和浮点数),二进制(图片,音频和视频),但是最大不能超过512MB。

二. 命令
2.1 设置值
(1)      set key value [ex seconds] [pxmillisecons] [nx|xx]

EX seconds –设置过期时间,单位秒
PX milliseconds --设置过期时间,单位毫秒
NX –仅当key不存在时设置成功。失败返回nil。用于添加。
XX –仅当key存在时设置成功。失败返回nil。用于更新
(2)   setnx key value 当key不存在时设置成功
(3)   setex key second value设置key,value,并指定多少秒后失效
2.2  批量设置值
     msetkey1 value1 key2 value2 …

 
2.3 获取值
get key  如果key存在,返回key对应的value。如果key不存在,返回nil。
2.4 批量获取值
mget key1 key2  …   ,结果按照传入键的顺序返回。

 
2.5 计数
(1)incr key

Incr对值做自增操作。其返回值分三种情况:

a.      值不是整数。返回错误

b.      值是整数,返回自增后的结果

c.      值不存在,按照0自增,返回1.

(2)decr key

decr对值做自减操作。其返回值分三种情况:

a. 值不是整数。返回错误

b. 值是整数,返回自减后的结果

c. 值不存在,按照0自减,返回-1.

(3)incrby key num

incrby对值做自增指定数字操作。其返回值分三种情况:

a.  值不是整数。返回错误

b.      值是整数,返回自增指定数字后的结果

c.      值不存在,按照0自增指定数字.

(4)decrby key num

decrby对值做自减指定数字操作。其返回值分三种情况:

a. 值不是整数。返回错误

b. 值是整数,返回自减指定数字后的结果

c. 值不存在,按照0自减指定数字

3.2.1.1.2.6 追加值

append key value在字符串结尾追加指定内容

例如: set a aaa

append a aa

       get a,返回aaaaa.

 

2.6 返回指定key的值的长度

strlen key 返回指定key的value的字符串长度。

例如: set a aaa

       strlen key,返回3.

2.7 设置指定位置的字符

setrange keyoffset value

例如: set a test

     setrange a 0 b,返回best

    

2.8 获取部分字符串

getrange keystart end

start和end分别是开始和结束的偏移量。从0开始。

三.字符串类型命令时间复杂度

四. 内部编码
   字符串类型的内部编码有3种。Redis会根据当前值的类型和长度选择使用哪种类型编码实现。

(1)      int,8字节长整型

例如:set a 890

     object encoding a,返回int

(2)      embstr,不大于39字节的字符串

例如:set a hello

     object encoding a,返回embstr

 

(3)      raw,大于39字节的字符串

例如:set a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

object encoding a,返回raw

五. key命名规范
Redis的键名称需要进行设计,用于减少键的冲突,同时提高项目的可维护性。比较推荐的方式是:业务名:对象名:id.

例如mysql数据库名是usercenter,用户表是user,那么对应的键可以是usercenter:user:0001或者是usercenter:user:0001:name来表示,如果键太长可以缩写部分键名,从而减少键的长度避免内存浪费。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: