redis数据类型以及常用相关命令

String类型及操作

String是最简单的类型,一个key对应一个value,string类型是二进制安全的。Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。

Set方法

设置key对应的值为string类型的value ,例如:我们添加一个name = xingdong的键值对 redis 127.0.0.1:6379>set name xingdong

获取name的话 get name 就可以了

Setnx方法

如果存在则返回0,否则插入

Setex 方法

设置key对应的值为string类型的value,并指定此键值对应的有效期

Setex haircolor 10 red

Get haircolor 10秒后过期返回(nil)

Setrange 方法

Set email xingdong@126.com

Setrange email 8 @qq.com //第8个字符开始替换,只替换现有字符串的长度

Get emali 得到 xingdong@qq.com

Mset方法

一次设置多个key的值,成功返回OK表示所有的值都设置了,失败并返回0表示没有任何值被设置

Mset name1 xingdong name2 action

Get name1 得到 xingdong

Get name2 得到 action

Msetnx方法

一次设置多个key 的值,成功返回ok表示所有的值都已经设置,失败返回0表示没有任何值设置,但是不会覆盖已经存在的key。

有一个设置不成功,则返回0 false

Getset方法

设置key的值,并返回key的旧值

Getrange方法

获取key 的value值的子字符串

Getrange name 0 5

Mget方法

一次获取多个key 的值,如果对应key不存在,则对应返回nil

Meget name1 name2

Incr (decr 对key 的值做减操作)

对key的值做加加操作,并返回新的值

Set age 24

Incr age 得到的是25

Incrby (decrby 减指定值)

同incr类似,加指定值,key 不存在的时候会设置key,并认为原来的value为0

Incrby age 5 得到的是 30(加5)

Append

给指定key的字符串追加value,返回新字符串值的长度

Append name .com

Strlen

取指定key的value值的长度

Strlen name

Hashs 类型

Hashs类型及操作

Redis hash 是一个string类型的field和value 的映射表。他的添加、删除操作都是0(1)平均。Hash特别适用于存储对象。相较于将对象的每个字段存成单个srting类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

Hset 方法

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

Hset user:001 name xingdong

Hget user:001 name 得到xingdong

Hsetnx方法

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

Hmset

同时设置 hash的多个field

Hmset user:001 name action age 24

Hmget 获得多个值

Hincrby 方法

Hexits 测试指定field 是否存在

Hexits user:001 name 存在返回1不存在返回0

Hlen 方法 指定hash的field的数量

Hdel 方法 删除指定hash的filed

Hkeys 方法 返回hash的所有field

Hvals 方法 返回hash的所有value

Hgetall方法 获取 某个hash中全部的field及value

List类型

List类型及操作

List是个链表结构,主要功能是push pop 获取一个范围的所有值等。操作中key理解为链表的名字。Redis 的list类型其实就是每一个子元素都是string类型的双向链表,我们可以通过push pop操作从链表中的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。

栈 压入 1 2 3 输出 3 2 1

队列 压入 1 2 3 输出 1 2 3

Lpush 在key对应的list头部添加字符串元素

Lpush mylist ‘world’

Lpush mylist ‘hello ’

Lange mylist 0 -1 // 0到负1

输出 hello world

rpush 在key对应的list尾部添加字符串元素

Linsert在key对应list 的特定位置前或者后添加字符串

lpush mylist “world”

Insert mylist before “world” “hello” //在world前添加hello

Lrange mylist 0 -1

Lset设置list中指定下标的元素值

Rpush mylist “hello”

Lset mylist 0 “world”

Lrange mylist 0 -1

Lrem从key对应list中删除n个和value相同的元素。(n<0从尾删除,n=0全部删除)

Rpush mylist “one” 四次

Lrem mylist 3 “one”

Ltrim保留指定key的值范围内的数据,其余的全部删除

Ltrim mylist 1 -1 保留 1 到后面所有的

Lpop 从list的头部删除元素,并返回删除元素

Lpop mylist

Rpop 与lpop相反

Rpoplpush从第一个list 的尾部移除元素并添加到第二个list的头部

Rpoplpush mylist1 mylist2

Lindex 返回名称为key的list中的index位置的元素

Lindex mylist 0

Llen 返回key对应的list类型对应的长度u

Set 类型

Setl类型和操作

Set 是集合,是string类型的无序集合。Set是通过hash table 实现的,添加 删除 和查找的复杂度都是 0(1)。对集合我们可以去并集 交集 差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。

Sadd 向名称为key的set中添加元素

Sadd myset ‘hello’ 重复添加的返回 0

Smembers myset 列出元素

Srem 删除名称为key的set中的元素

Srem myset ‘hello’

Spop 随机返回并删除名称为key 的set中的一个元素

Spop myset

Sdiff 返回所有指定key与第一个key的差集

Sdiff myset1 myset2 // 以myset为标准

Sdiffstore返回所有指定key与第一个key 的差集,并将结果存为另一个key

Sdiffstore myset1 myset2 myset3 2与3的差集存到1里面

Sinter 返回所有给定key 的交集

Sinter myset1 myset2

Sinterstore返回所有指定key与第一个key 的交集,并将结果存为另一个key

Sinterstore myset1 myset2 myset3 2与3的交集存到1里面

Sunion 返回制定所有key 的并集

Sunion myset1 myset2

Sunionstore 返回所有给定key 的并集

Sunionstore myset1 myset2 myset3 同上

Smove 从第一个key对应的set中移除member并添加到第二个对应的set中

Smove myset1 myset2 one 将myset1中的one元素放到myset2 中去

Scard 返回名称为key的set的元素个数

Scard myset

Sismember 测试member是否是名称为key的set的元素

Sismember myset one

Srandmember //随机返回名称为key的set的一个元素,但不删除元素

Srandmember myset

Sorted set类型及操作

Sorted set 是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次制定后,zset会自动重新按新的值调整顺序。可以理解为有两列的mysql表,一列存value ,一列存顺序。操作中key理解为 zset的名字。

Zadd方法

向名称为key的zset中添加元素member,score用于排序,如果该元素存在,则更新其顺序

Zadd myset 1 “one”

Zadd myset 2 “two”

Zadd myset 3 “three”

Zrange myset 0 -1 withscores(不叫withscores 只列出 one two three)

Zrem 删除名称为key的zset中的元素member

Zrem myset one

Zincrby 方法

如果在名称为key 的zset中已经存在元素member,则该元素的score增加increment,则该元素的score增加increment,否则向该集合中添加该元素,其score的值为increment

Zrank

返回名称为key的zset中的member元素的排名(按score从小到大排序)即下标

zrevrank

返回名称为key的zset中的member元素的排名(按score从大到小排序)即下标

Zrevrange 相反排序

Zrevrange myset 0 -1

Zrangebyscore方法 返回集合中score在给定区间的元素

Zrangebyscore myset 2 3 withscores 返回 2 到3的元素

Zcount 返回集合中score在给定区间的数量

Zcount myset

Zcard 返回集合中score所有的数量

Zcard myset

Zremrangebyrank 删除集合中排名在给定区间的元素

Zremrangebyrank myset 1 1(按照索引)

Zremrangebyscore 删除集合中score在给定区间的元素

其他常用命令

Key 返回满足给定pattern的所有key / key sess

Exists 确认一个key 是否存在 / exists name

Del 删除一个键 del name

Expire 设置一个key过期的时间 expire name 10

Ttl name 查看还有多少时间过期

//数据库形式

默认的是select 0 编号0-15

Select 0 Set age 30 Get age 得到值Move age 1 Get age没有值

Select 1 Get age / 得到值

Persist 移除给定key 的过期时间 Persist name

Randomkey 随机返回key空间的一个key randomkey

Rename 重命名 key rename age newgae

Type 返回键的数据类型 type name

Ping 测试连接是否存活 ping

Echo 在命令行打印一些内容 echo name

Quit 退出连接 exit

Dbsize 返回当前数据库中key 的数目 dbsize

Info 返回服务器的信息和统计

Config get 实时传储收到的请求config get dir config get *

Flushdb 删除当前选择数据库中的所有key

Flushall 删除所有数据库的所有key