ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis,定义、各数据类型增删改查

2022-04-18 23:34:02  阅读:198  来源: 互联网

标签:127.0 name myzset 0.1 Redis myset 改查 key 数据类型


1. 定义

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

 

2.核心特点:

(1)   单进程:

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

 

3.数据类型:

键的类型是字符串

 

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

 

1.  string类型

(1)简介

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

 

(2)set命令

set 键值

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

》如果键存在,就是修改

(1)设值取值

set name zs

set name lisi

(2)设置过期时间

setex   name2  3  wangwu

(2)   设置多个键值对

mset key1 value1 key2 value2 key3 value3

(3)   追加值

append key value

 

 

(3)  get命令

(1)   获取单个值

get key1

(2)   获取多个值

mget key1 key2

 

(3)  del命令

(1)   删除某个键

del key1

(2)   删除多个键

del key1 key2

 

(4)keys命令(查找键)

mset u1 aa u2 bb u3 cc

keys *

 

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

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

exists key

 

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

type key

 

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

expire key seconds

 

案例:

set name zz

expire name 5

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

get name

 

(8)TTL 命令(查看键有效时间)

TTL key

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

 

返回值:

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

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

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

 

2.list类型

(1)简介

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

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

 

(2)添加

从左侧插入值:

lpush key value1 value2

从右侧插入值:

rpush key value1 value2

 

 

(3)  获取

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

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

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

(3)   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

 

 

 

(4)修改

设置指定索引位置的值

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

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

语法:lset key index value

 

实战:

lset name 1 aa

lrange name 0 -1

 

(5)删除

删除指定值

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

(2)   count>0:从头往尾删除

(3)   count<0:从尾往头删除

(4)   count=0:删除所有值

语法:lrem 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类型

(1)简介

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

 

(2)实战

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哈希类型

(1)简介

按Hash方式来存放字符串

 

(2)实战

  1. 设置值,格式是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"

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

案例:

hmset myhash name 322 age 8

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

案例:

127.0.0.1:0>hgetall myhash

1) "id"

 2)  "123"
 3)  "name"
 4)  "321"
 5)  "age"
 6)  "8"

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

127.0.0.1:0>hget myhash name

"321"

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

案例:

127.0.0.1:0>hmget myhash id name age

 1)  "123"

 2)  "321"

 3)  "8"

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

127.0.0.1:0>hdel myhash id

"1"
127.0.0.1:0>hgetall myhash

 1)  "name"

 2)  "321"

 3)  "age"

 4)  "8"

 

 

5.zset类型(有序集合)

(1)简介

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

 

(2)实战

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

标签:127.0,name,myzset,0.1,Redis,myset,改查,key,数据类型
来源: https://www.cnblogs.com/lyabbk/p/16163372.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有