Redis五种基本类型的操作

 string 操作

String举例:

添加/修改一个 string:

127.0.0.1:6379> set test 123

重新赋值:

127.0.0.1:6379>set test 456

查询一个string:

127.0.0.1:6379>get test

append追加一个string:

127.0.0.1:6379> append test 456

注:(integer) 6(返回字符串的长度)

删除一个key:

扫描二维码关注公众号,回复: 2474284 查看本文章

127.0.0.1:6379>del test

返回字符串长度

127.0.0.1:6379>strlen test


hash 操作

   hash是一个string类型的fieldvalue的映射表,可以看做是一个Map表结构容器。

添加一个 hash

127.0.0.1:6379>HMSET hashtest  name xiaoming age 12

返回整个 hash

127.0.0.1:6379>HGETALL hashtest

1)"name"

2)"xiaoming"

3)"age"

4)"12"

返回hash中的一个字段:

127.0.0.1:6379>hget hashtest name

"xiaoming"

返回hash中的多个个字段:

127.0.0.1:6379>HMGET hashtest name age

1)"xiaoming"

2)"12"

删除一个hash中的字段:

127.0.0.1:6379>HDEL hashtest age

127.0.0.1:6379>HGETALL hashtest

1)"name"

2)"xiaoming"

添加/修改hash中的字段:

127.0.0.1:6379> HSET hashtest  name xiaoxin

(integer) 0

127.0.0.1:6379> HGETALL hashtest

1) "name"

2) "xiaoxin"

查看指定键是否存在:

127.0.0.1:6379> HEXISTS hashtest age

(integer) 0

注:返回整数10

    1表示哈希包含该字段。

    0 表示哈希不包含该字段,或key不存在。

 

补:

查看所有存在的键:

127.0.0.1:6379> KEYS * 

清空所有数据库数据: 

127.0.0.1:6379> FLUSHALL 

清空当前数据库数据: 

127.0.0.1:6379> FLUSHDB


 list操作

添加元素到列表头:

127.0.0.1:6379>LPUSH listtest a b c

(integer)4 

获取列表指定范围内的元素,LRANGElist_name index_start  index_end 如:

 127.0.0.1:6379> LRANGE listtest 0 2

1)"c"

2)"b"

3)"a"

添加元素到列表尾:

127.0.0.1:6379>RPUSH listtest 1 2 3

(integer)6

查看key对应的value类型:

127.0.0.1:6379>TYPE listtest

list

通过索引获取列表中的值:

127.0.0.1:6379>LINDEX listtest 3

"1"

获取列表长度:

127.0.0.1:6379>LLEN listtest

(integer)6

移除元素:

lremlisttest count  value

count > 0 : 从表头开始向表尾搜索,移除与value 相等的元素,数量为 count

count < 0 : 从表尾开始向表头搜索,移除与 value相等的元素,数量为 count 的绝对值。

count = 0 : 移除表中所有与 value 相等的值。

例子:

127.0.0.1:6379>LRANGE list 0  2

1)"3"

2)"3"

3)"1"

127.0.0.1:6379>LREM list 1 3

(integer)1

127.0.0.1:6379>LRANGE list 0 2

1)"3"

2)"1"

删除其中某条记录(示例):

127.0.0.1:6379>LPUSH list qq ww ee qq qq tt

(integer)6

127.0.0.1:6379>LRANGE list 0 5

1)"tt"

2)"qq"

3)"qq"

4)"ee"

5)"ww"

6)"qq"

127.0.0.1:6379>LSET list 3 flag

OK

127.0.0.1:6379>LRANGE list 0 5

1)"tt"

2)"qq"

3)"qq"

4)"flag"

5)"ww"

6)"qq"

127.0.0.1:6379>LREM list 0 flag

(integer)1

127.0.0.1:6379>


 set操作

setstring类型的无序集合。集合成员是唯一的,不允许重复

添加数据到集合:

127.0.0.1:6379> SADD settest 1 2 3 4 5

(integer) 5

返回集合数据:

127.0.0.1:6379> SMEMBERS settest

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

获取集合数量:

127.0.0.1:6379> SCARD settest

(integer) 5

移除集合中的值:

127.0.0.1:6379> SREM settest 5

(integer) 1


 sorted set操作

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

有序集合特点:

1.有序集合中每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

2.有序集合的成员是唯一的,但分数(score)却可以重复。

3.有序集合和集合一样也是string类型元素的集合,且不允许重复的成员

添加元素到集合:

127.0.0.1:6379> ZADD sortset 1 a

(integer) 1

注:如果value(a)存在,更新分数,否则添加新value,分数可以相同。

返回指定元素的分数:

127.0.0.1:6379> ZSCORE sortset a

"1"

查询元素,ZRANGE sortset start_index  end_index

127.0.0.1:6379> ZRANGE sortset 0 1

1) "a"

移除集合中的元素:

127.0.0.1:6379> ZREM sortset a

(integer) 1

根据分数区间查询元素

127.0.0.1:6379> ZCOUNT zset 1 10

3.6 有序集合与列表(EXT):

有序集合类型在某些方面和列表类型有些相似:

(1)二者都是有序的。

(2)二者都可以获得某一范围的元素。

但是二者有着很大的区别,这使得它们的应用场景也是不同的:

(1)列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用。

(2)有序集合类型是使用散列表和跳跃表(Skip list)实现的,所以即使读取位于中间部分的数据速度也很快。

(3)列表中不能简单地调整某个元素的位置,但是有序集合可以。

(4)有序集合要比列表类型更耗费内存。有序集合类型算得上是 Redis的5种数据类型中最高级的类型。


猜你喜欢

转载自blog.csdn.net/xiayubing_/article/details/81019017