李琪的技术专栏 System Research

redis基本操作(Linux版本)

2020-04-18
Clear Li

阅读:


redis是为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方案,就是NoSql数据库。

后端启动

./redis-server redis.conf

打开命令行客户端

./redis-cli -h 127.0.0.1 -p 6379

正常关闭

./redis-cli shutdown

数据类型

1 String类型

赋值

set  name zhangsan

image-20200418163206077

取值

get name

image-20200418163323876

赋多个值

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mget k1 k3
1) "v1"
2) "v3"

数值增减

当存入的字符为整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。

incr num

image-20200418163916682

image-20200418164041791

增加指定的整数

image-20200418164148424

相应的也有递减

decr num

image-20200418170317673

向尾部追加值

APPEND的作用是向键值的末尾追加value。如果键不存在则将该键的值设置为value,即相当于 SET key value。返回值是追加后字符串的总长度。

语法:APPEND key value

  127.0.0.1:6379> set str hello  OK 

 127.0.0.1:6379> append str "  world!"  

(integer) 12 

 127.0.0.1:6379> get str   "hello world!"  

获取字符串长度

STRLEN命令返回键值的长度,如果键不存在则返回0。

语法:STRLEN key

  *127.0.0.1:6379> strlen str*   *(integer) 0* 

 *127.0.0.1:6379> set str hello*  *OK* 

 *127.0.0.1:6379> strlen str*   *(integer) 5*     

2 Hash类型

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。也就是说不能向HashSet一样里面还能存储别的set或者list类型,例如

赋值

hset user username zhangsan

image-20200418172731401

然后查看一下具体的存储结构

image-20200418172814246

可以发现类似于Java中的对象的结构,或者是json数据中的值

那么要是一次设置多个值呢,可以使用hmset

 hmset user age 20 username lisi 

那假如说要是有值救不赋值呢,使用hsetnx

 hsetnx user age 30	//如果user中没有age字段则设置age值为30,否则不做任何操作

取值

取某一个值hegt key field

取多个值hmget key field [field …]

例如

image-20200418181045777

删除

hdel可以删除一个或多个字段,例如

hdel user username 
hdel user username password

3 list类型

列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段

列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为0(1),获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

向列表两端增加元素

//向左添加
lpush key value [value ...]
//向右添加
rpush key value [value ...]

查看列表

lrange命令是列表类型最常用的命令之一,获取列表中的某一片段,将返回start、stop之间的所有元素(包含两端的元素),索引从0开始。索引可以是负数,如:“-1”代表最后边的一个元素。

lrange item:1001  0 1

从两端弹出元素

LPOP命令从列表左边弹出一个元素,会分两步完成:

第一步是将列表左边的元素从列表中移除

第二步是返回被移除的元素值。

语法:

LPOP key
RPOP key

获取元素个数

语法:LLEN key

  127.0.0.1:6379> llen list:1
  (integer) 2

4 Set类型

集合中的数据是不重复且没有顺序。

增加

SADD key member [member ...]

取值

SMEMBERS key

判断元素是否在集合中

SISMEMBER key member

上一篇 希尔排序