Redis教程

Redis常用基础知识

本文主要是介绍Redis常用基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一.定义

Redis是一个高性能的key-value数据库,key是字符串类型

二.特点

(1)单进程:Redis的服务器程序采用的是单进程模型来处理客户端的请求。对读写时间的响应是通过epoll函数的包装来做到的。

(2)支持持久化

(3)丰富的数据类型

三.数据类型

键的类型是字符串

值的类型分为五种:字符串string,哈希hash,列表list,无序集合set,有序集合zset

1.string类型

简介

字符串(string)是Redis最基本的类型,可以存储String,Integer,Float型的数据,甚至是二进制数据,一个字符串最大容量是512M

set命令

set 键值

》如果键不存在,就是添加

》如果键存在,就是修改

设值取值

set name zs

set name lisi

设置过期时间

setex   name2  3  wangwu

设置多个键值对

mset key1 value1 key2 value2 key3 value3

追加值

append key value

get命令

获取单个值

get key1

获取多个值

mget key1 key2

del命令

删除某个键

del key1

删除多个键

del key1 key2

keys命令(查找键)

mset u1 aa u2 bb u3 cc

keys *

exists命令(判断键是否存在)

如果存在返回1,不存在返回0

exists key

type命令(查看键对应值的类型)

type key

expire命令(设置键过期时间)

expire key seconds

案例:

set name zz

expire name 5

get name------------>(等一会儿...)

get name

ttl命令(查看键有效时间)

TTL key

以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

返回值:

当 key 不存在时,返回 -2 。

当 key 存在但没有设置剩余生存时间时,返回 -1 。

否则,以秒为单位,返回 key 的剩余生存时间。

2.list类型

简介

(1)列表中的值(value)类型为字符串;

(2)字符串List,底层实现上不是数组,而是链表,也就是说在头部和尾部插入一个新元素,其时间复杂度是常数级别的;其弊端是:元素定位比数组慢

添加

从左侧插入值:

lpush key value1 value2

从右侧插入值:

rpush key value1 value2

获取

返回列表里指定范围内的值

索引从左侧开始,第一个值的索引为0;

索引可以是负数,表示从尾部开始计数,如-1表示最后一个值;

start,stop为要获取值的索引。

语法:lrange key start stop

例如:

(1)获取列表所有值

lrange  key  0  -1

(2)从第三个元素开始获取到最后的值

lrange  key  2  -1

实战:

lpush name 1 2 3

rpush name 4 5 6

lrange name 0 -1

lrange name 2 -1

修改

设置指定索引位置的值

(1)索引从左侧开始,第一个值的索引为0;

(2)索引可以是负数,表示从尾部开始,-1代表最后一个值。

语法:lset key index value

实战:

lset name 1 aa

lrange name 0 -1

删除

删除指定值

将列表中前count次出现的值移除

count>0:从头往尾删除

count<0:从尾往头删除

count=0:删除所有值

语法:irem key count value

(1)实战:

rpush born2 0 1 2 3 4 5 0 1 2 1 0 1 0 2 3 4 1 0 1 1 2

(2)查询列表

lrange born2 0 -1

(3)案例2:从键列表右侧开始删除1个2

lrem born2 -1 2

(4)查询列表

lrange born2 0 -1

(5):从键列表左侧开始删除2个2

lrem born2 2 2

(6)查询列表

lrange born2 0 -1

3.set类型

简介

字符串Set,无序不可重复,是通过HashTable实现的。

实战

1.sadd:添加元素,格式是SADD KEY_NAME VALUE1..VALUEN

127.0.0.1:0>sadd myset v1
127.0.0.1:0>sadd myset v1       #不得重复
127.0.0.1:0>sadd myset v2 v3 v4  #可以设置多个值

2.smembers:获取集合中所有元素,格式是SMEMBERS key

127.0.0.1:0>smembers myset     #查询myset中的值有哪些

3.sismember:判断元素是否在集合中,格式是SISMEMBER KEY VALUE

127.0.0.1:0>sismember myset v1
127.0.0.1:0>sismember myset v11

4.srem:删除元素,格式是SREM KEY MEMBER1..MEMBERN

127.0.0.1:0>srem myset v1

127.0.0.1:0>srem myset v1

127.0.0.1:0>smembers myset

5.scard:获取集合中元素个数,格式是SCARD KEY_NAME

127.0.0.1:0>scard myset

6.spop:弹出元素,格式是SPOP key [count]

127.0.0.1:0>spop myset
127.0.0.1:0>spop myset
127.0.0.1:0>spop myset
127.0.0.1:0>spop myset

127.0.0.1:0>smembers myset

7.smove:移动元素,格式是SMOVE SOURCE DESTINATION MEMBER 

sadd myset v1 v2 v3

smembers myset

smove myset myset2 v3

smembers myset

smembers myset2

4.Hash哈希类型

简介

按Hash方式来存放字符串

实战

设置值,格式是HSET  KEY_NAME  FIELD  VALUE

案例:

127.0.0.1:0>hset myhash id 123

"1"
127.0.0.1:0>hset myhash name 321

"1"

hmset:同时设置多对值,格式是HMSET  KEY_NAME  FIELD1 VALUE1 ...FIELDN VALUEN 

案例:

hmset myhash name 322 age 8

hgetall:获取该key下所有的值,格式是HGETALL KEY_NAME

案例:

127.0.0.1:0>hgetall myhash

1) "id"

 2)  "123"

 3)  "name"

 4)  "321"

 5)  "age"

 6)  "8"

hget:获取单个key的值,格式是HGET KEY_NAME FIELD_NAME 

127.0.0.1:0>hget myhash name

"321"

hmget:同时获取多个值,格式是HMGET KEY_NAME FIELD1...FIELDN

案例:

127.0.0.1:0>hmget myhash id name age

 1)  "123"

 2)  "321"

 3)  "8"

hdel:删除某个项,格式是HDEL KEY_NAME FIELD1.. FIELDN

127.0.0.1:0>hdel myhash id

127.0.0.1:0>hgetall myhash

 1)  "name"

 2)  "321"

 3)  "age"

 4)  "8"

5.zset类型(有序集合)

简介

字符串Set,有序且不可重复,根据Score来排序。

实战

1.

zadd:添加元素,格式是ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN,score和项可以是多对,score可以是整数,也可以是浮点数,还可以是+inf表示正无穷大,-inf表示负无穷大

案例:

zadd myzset 10 v1

zadd myzset 10 v1 20 v2 30 v3

zadd myzset 9 v1 20 v2 30 v3

2.

zrange:获取索引区间内的元素,格式是ZRANGE key start stop [WITHSCORES]

案例:

zrange myzset 0 -1

zrange myzset 0 -1 withscores

3.

zrangebyscore:获取分数区间内的元素,格式是ZRANGEBYSCORE key min max [WITHSCORES] 案例:

zrangebyscore myzset 0  20            #代表大于等于0,小于等于20

zrangebyscore myzset 0  (20           #代表大于等于0,小于20

zrangebyscore myzset 0  (20 withscores  #代表大于等于0,小于20,带分数

zrangebyscore myzset 20 +inf withscores  #代表大于等于20,带分数

zrangebyscore myzset (20 +inf withscores  #代表大于20,带分数

4.

zrem:删除元素,格式是ZREM key member [member ...]

案例:

zrem myzset v1 v2                         #删除v1,v2

zrangebyscore myzset 0 +inf withscores    #获取所有的大于0的值和分数

5.

zcard:获取集合中元素个数,格式是ZCARD KEY_NAME

案例:

zcard myzset

这篇关于Redis常用基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!