二、Redis的基本数据类型

一、Strings

String是最简单的类型,一个key对应一个value,string类型是二进制安全的。

1、Set方法

如  name = tianhu.peng

>set name tianhu.peng

>get name -- tianhu.peng

>set name buzz

>get name -- buzz

2、Setnx  nx=> not exist

>set name tianhu.peng

>get name -- buzz

3、Setex  ex指定有效期

>setex age 10 30

10 9 8 7 6 5 4

>get age -- 30

3 2 1

>get age -- nil

>get age 30  永久有效

4、setrange 替换

>set mail buzztty@163.com

>setrange name 8 gmail.com

>get mail  -- buzztty@gmail.com

5、mset  一次设置多个key值  返回0所有都不存在

mset key1 val1 key2 val2 key3 val3

>get key1 --val1

>get key2 --Val2

>get key3 --Val3

6、msetnx 一次性设置多个key值,如果存在,所有设置失败

>msetnx key3 --val3.1 key4 --val4

7、getset  设置一个值,并返回一个旧值

>getset key4 val4.1

8、getrange 获取key的value值的子字符串

>set name buzztty

>getrange name 0 5 --buzztt

9、mget批量获取

> mget key1 key2 key3 key4

10、incr  <==> ++  decr <==>--

> set age 30

>incr age

11、incrby 设置步长(如果不存在,就新增)  decrby --

>incrby nianling

>incrby nianling  5 -- 加5

>incrby nianling -5 --减5

12、 append 追加

>set mail buzzty

>append mail @gmail.com

13、strlen 长度

>setrlen mail


二、hashes数据类型

Redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)(平均)

hash特别适用于存储对象

1、hset 设置值

>hset user:001 name buzz

>hget user:001 name   ---buzz

2、hsetnx 不能设置存在的

>hset user:001 name buzz

>hset user:001 name buzztty -- 设置不成功

3、hmset 批量设置

>hmset user:001 name buzz age 30

4、hmget 批量获取(批量返回)

>hmget user:001 name age 

5、hincrby 加加

>hincrby user:001 age 20  -- 50

6、hexists  字段是否存在

>hexists user:001 sex

7、hlen 返回字段长度

>hlen user:003

8、hdel 删除指定字段

>hdel user:003 age

9、hkeys 返回所有字段

>hkeys user:003

10、hvals 返回所有值

>hvals user:003

11、hgetall  返回所以的field和values

>hgetall user:003


三、list类型

redis中的list是一个双向链表结构,主要功能就是push、pop和获取一个范围的所有值等,操作中key理解为链表的名称。

因为list类型的特性,我们可以将其作为栈又可以作为队列

栈的特性:先进后出

队列的特性:先进先出

1、lpush 在key对应的list头部压入一个元素 (从头压入,从尾出来)

lpush mylist 'world'

lpush mylist 'hello'

lrang mylist 0 -1  显示1)"hello" 2)"world"

2、rpush 在key对应的list尾部压入一个元素(从尾压入,从头出来)

rpush mylist2 'hello'

rpush mylist2 'world'

lrange mylist2 0 -1  显示1) "hello" 2) "world"

3、linsert 在key对应的list特定位置的前或后添加字符

rpush mylist3 "world"

linsert mylist3 before "world" "hello"  (也有after关键字)

lrang mylist3 0 -1 显示1) "hello" 2) "world"

4、lset设置list中指定下标的元素值

rpush mylist4 "hello"

lset mylist4 0 "world"

lrange mylist4 0 -1 显示1)"world"

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

rpush mylist5 "hello"

rpush mylist5 "hello"

lrm mylist5 1 "hello"  lrange mylist5 0 -1

lrm mylist5 -1 "hello" lrange mylist5 0 -1

6、ltrim保留指定key的值范围内的数据

rpush mylist6 "one"

rpush mylist6 "two"

rpush mylist6 "three"

ltrim mylist6 1-1 (two)  ltrim mylist6 1-2(two)  ltrim mylist6 1 -3 (two three)

7、lpop从list头部删除元素并返回元素

lrange mylist7 0 -1    // 1 2 3 4 5 6 7

lpop mylist7 // 1

8、rpop从list尾部删除元素并返回删除元素

rpop mylist7 // 7

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

rpush mylist8 1

rpush mylist8 2

rpush mylist9 3

rpush mylist9 4

rpoplpush mylist8 mylist9

lrange mylist8 0 -1 // 1

lrange mylist9 0 -1 // 2 3 4

10、lindex返回名称为key的list中index位置的元素

rpush mylist10  "a"

rpush mylist10  "b"

rpush mylist10  "c"

lindex mylist10 2    // c

lindex mylist10 1    // b

11、llen返回key对应list的长度

llen mylist10   //  3



四、sets类型

set就是集合,它是string类型无序集合

set是通过hash table实现的

集合我们可以取并集、交集、差集

1、sadd 向名称为key的set中添加元素

sadd myset1 "hello"

sadd myset1 "world"

sadd myset1 "world"   // 添加相同的元素,不能成功

smembers myset1

2、srem 删除名称为key的set中的元素

sadd myset2 "one"

sadd myset2 "two"

sadd myset2 "three"

srem myset2 "two"    //删除 two元素

3、spop随机返回并删除名称为key的set中的一个元素(因为sets是无序的集合)

sadd myset3 "one"

sadd myset3 "two"

spop myset3   //随机

4、sdiff返回所有给定key与第一个key的差集

myset41 one two

myset42 one three

sdiff myset41 myset42  // 这里返回two

5、sdiffstore返回所有给定key与第一个key的差集并将结果存储为另一个key

sdiffstore myset5 myset41 myset42

6、sinter返回所有给定key的交集

sinter myset41 myset42   //  one

7、sinterstore返回所有给定集合的交集并将结果放在另一个key中

sinterstore myset7 myset41 myset42

8、sunion返回所有给定key的并集

sunion myset41 myset42   // one two three

9、sunionstore将并集的结果放入一个集合中

sunion myset9 myset41 myset42 

smemebers myset9

10、smove 从第一个key对应的set中移除元素并添加到第二个对应的set中

smembers myset101  // one two

smembers myset102 // one three

smove myset101 myset102 two

smembers myset101  // one

smembers myset102  // two one three

11、scard 返回名称为key的set的元素个数

scard myset102 //3

12、sismember 是否包含元素

sismember myset102  one   // 返回1

sismember myset102  four   // 返回0

13、srandmember 随机返回一个元素

srandmember myset102  // 随机返回一个元素值,但不是删除




五、sorted sets类型 ----有序集合(zset)

sorted set 是set的一个升级版本,它在set的基础上增加了一个顺序属性

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

zadd myzset1  1  one

zadd myzset1  2  two

zadd myzset1  3  two

zrange myzset1 0 -1 withscores     显示1) one 2)1 3)two 3) 3

2、zrem 删除元素

zrem myzset1 four  //删除没有的元素返回0

zrem myzset1 two // 返回1

3、zincrby  以指定值增加

zadd myset3 1 one

zadd myset3 2 two

zincrby myset3 2 one // 存在了one,将会1+2=3

zrange myzset3 0 -1 withscores

1)two 2)2 3)one 4)3

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

zrank  myzset3 one  // 1

zrank myzset3 two //0

(从0开始连续的)

zrange myset3 0 -1

3、zrevrank  与zrank相反

zrevrank myset3 one // 0

zrevrank myset3 two // 1

4、zrevrange与zrange相反 反序输出

zrange myset3 0 -1 withscores

zrevrange myset3 0 -1 withscores

5、zrangebyscore  根据score显示

zrange myzet5    one 1  two 2 three 3

zrangebyscore myzset3 2 3 withscore  two 2 three 3

6、zcount  返回集合中score在给定区间的数量

zcount myzset3 2 3 // 2

7、zcard 返回集合中所有元素个数

zcard myzset3   //3

8、zremrangebyrank   删除集合中排名给定的元素

zremrangebyrank myzset3 1 1  // one 1 three 3

9、zremrangebyscore  按顺序

zremrangebyscore myzset3 1 2 // three 3



上面就是redis的五中基本数据类型





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值