暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

redis入门基础

知识追寻者 2020-03-12
215


一 前言

知识追寻者的redis开篇第一篇,希望大家共勉;觉得文章不错,随手点赞关注谢谢;

先介绍一下redis概念:

Redis是一个开源的key-value存储系统,它属于NoSQL(Not Only SQL),不仅仅是关系型数据库;

再看看redis的优势:

  • 丰富的数据类型

  • 支持键过期特性

  • 每条指令都是原子性操作

  • 读写性能极高

初步了解一下redis的附加特性

  • 可以主存与二级存储,主从复制;

  • 支持数据持久化存储

linux 安装 redis 链接 :https://www.jianshu.com/p/bc84b2b71c1c

windows安装redis链接:https://www.jianshu.com/p/e16d23e358c0

docker 安装 redis 链接 https://juejin.im/post/5ca59dece51d4508b32a1292

最后生产环境中建议大家安装 redis 5.0.5 稳定版本

二 五大基础数据类型

2.1 字符串

字符串型数据存储为 key - val (键值对)形式,即每个 键都有对应唯一的值;如下图所示,age 为 key 则对应唯一的值为18;

命令介绍如下

  1. get : 获取存储给定键的值

  2. set : 设置给定存储键的值

  3. del : 删除给定键的值

  4. incr :计数,每次加1

  5. incrby : 计算,给定值加减

  6. mset : 设置多个键值

  7. mget : 获取多个给定键的值

  8. expire : 设置过期时间(适用所有类型)

  9. exists :是否存在键

存储字符串示例

setkey value

  1. 127.0.0.1:6379> set zszxz 666

  2. OK

获取字符串示例

getkey

  1. 127.0.0.1:6379> get zszxz

  2. "666"

删除字符串示例

delkey[key...]

  1. 127.0.0.1:6379> del zszxz

  2. (integer) 1

计数示例:

incr key

  1. 127.0.0.1:6379> set age 100

  2. OK

  3. 127.0.0.1:6379> incr age

  4. (integer) 101

  5. 127.0.0.1:6379> incr age

  6. (integer) 102

  7. 127.0.0.1:6379> get age

  8. "102"

  9. 127.0.0.1:6379>

incrby key increment

  1. 127.0.0.1:6379> set age 100

  2. OK

  3. 127.0.0.1:6379> incrby age 5

  4. (integer) 105

  5. 127.0.0.1:6379> incrby age -2

  6. (integer) 103

  7. 127.0.0.1:6379> get age

  8. "103"

  9. 127.0.0.1:6379>

多键值对示例

mset key value [key value ...]

mget key [key ...]

  1. 127.0.0.1:6379> mset u1 you1 u2 you2

  2. OK

  3. 127.0.0.1:6379> mget u1 u2

  4. 1) "you1"

  5. 2) "you2"

  6. 127.0.0.1:6379>

设置过期时间

expire key seconds

  1. 127.0.0.1:6379> expire u1 1

  2. (integer) 1

  3. 127.0.0.1:6379> get u1

  4. (nil)

  5. 127.0.0.1:6379>

存在示例

exists key [key ...]

  1. 127.0.0.1:6379> set age 100

  2. OK

  3. 127.0.0.1:6379> exists age

  4. (integer) 1

  5. 127.0.0.1:6379>

2.2 列表

列表其实就是链表,一个列表有一个键,一个键对应多个值,值可以重复,取值时根据索引取值即可;

  1. rpush : 将值推入列表右端

  2. lrange : 获取列表给定范围内所有的值

  3. lindex : 获取列表上给定位置的单个元素

  4. lpop : 从列表的左端弹出一个值

值入列表示例

rpush key value[value...]

  1. 127.0.0.1:6379> rpush list-zszxz a

  2. (integer) 1

  3. 127.0.0.1:6379> rpush list-zszxz b

  4. (integer) 2

  5. 127.0.0.1:6379> rpush list-zszxz c

  6. (integer) 3

范围取值示例

lrange key start stop

  1. 127.0.0.1:6379> lrange list-zszxz 0 -1

  2. 1) "a"

  3. 2) "b"

  4. 3) "c"

给定索引取值示例

lindex key index

  1. 127.0.0.1:6379> lindex list-zszxz 1

  2. "b"

左弹出示例

lpop key

  1. 127.0.0.1:6379> lpop list-zszxz

  2. "a"

  3. 127.0.0.1:6379> lrange list-zszxz 0 -1

  4. 1) "b"

  5. 2) "c"

2.3 集合

集合与列表类似,不过特殊指出是集合无序,并且每个值都是唯一,不可重复;

  1. sadd : 将给定的值加入集合

  2. smembers : 返回集合所有的元素

  3. sismember : 检查给定的元素是否存在集合中

  4. srem : 若集合中存在该元素,则移除该元素

添加示例

sadd key member[member...]

  1. 127.0.0.1:6379> sadd set-zszxz a

  2. (integer) 1

  3. 127.0.0.1:6379> sadd set-zszxz b

  4. (integer) 1

  5. 127.0.0.1:6379> sadd set-zszxz c

  6. (integer) 1

返回所有元素示例

smembers key

  1. 127.0.0.1:6379> smembers set-zszxz

  2. 1) "c"

  3. 2) "b"

  4. 3) "a"

存在示例

sismember key member

  1. 127.0.0.1:6379> sismember set-zszxz c

  2. (integer) 1

删除示例

srem key member[member...]

  1. 127.0.0.1:6379> srem set-zszxz a

  2. (integer) 1

  3. 127.0.0.1:6379> smembers set-zszxz

  4. 1) "c"

  5. 2) "b"

2.4 散列

散列点像java中的map,python中的字典;一个散列里面存储多个键值对;

  1. hset : 给定散列的键值对

  2. hget : 获取指定散列键的值

  3. hetall : 获取所有散列的键值对

  4. hdel : 若散列中存在该键,则移除键

设置散列键值对示例

hset key field value

  1. 127.0.0.1:6379> hset hash-key key1 a

  2. (integer) 1

  3. 127.0.0.1:6379> hset hash-key key2 b

  4. (integer) 1

  5. 127.0.0.1:6379> hset hash-key key3 c

  6. (integer) 1

  7. 127.0.0.1:6379>

获取散列给定键示例

hget key field

  1. 127.0.0.1:6379> hget hash-key key1

  2. "c"

获取散列所有键值对示例

hgetall key

  1. 127.0.0.1:6379> hgetall hash-key

  2. 1) "key1"

  3. 2) "c"

  4. 3) "key2"

  5. 4) "b"

  6. 5) "key3"

  7. 6) "c"

删除散列键示例

hdel key field[field...]

  1. 127.0.0.1:6379> hdel hash-key key1

  2. (integer) 1

  3. 127.0.0.1:6379> hgetall hash-key

  4. 1) "key2"

  5. 2) "b"

  6. 3) "key3"

  7. 4) "c"

  8. 127.0.0.1:6379>

2.5 有序集合

redis 有序集合与散列类似,不同之处键称为member, value称为 score ; 根据分值不同进行有序排序;

  1. zadd :将带有给定分值的成员添加入有序集合

  2. zrange : 根据有序集合的索引获取元素

  3. zrangebyscore : 获取有序集合内给定分值范围内的所有元素

  4. zrem : 如果成员存在有序集合中,则移除

添加成员示例

zadd key score member[score member...]

  1. 127.0.0.1:6379> zadd zset-key 600 member1

  2. (integer) 1

  3. 127.0.0.1:6379> zadd zset-key 650 member2

  4. (integer) 1

  5. 127.0.0.1:6379> zadd zset-key 680 member3

  6. (integer) 1

  7. 127.0.0.1:6379>

获取指定索引范围内的成员示例

zrange key start stop[WITHSCORES]

不带score

  1. 127.0.0.1:6379> zrange zset-key 0 -1

  2. 1) "member1"

  3. 2) "member2"

  4. 3) "member3"

带上score

  1. 127.0.0.1:6379> zrange zset-key 0 -1 withscores

  2. 1) "member1"

  3. 2) "600"

  4. 3) "member2"

  5. 4) "650"

  6. 5) "member3"

  7. 6) "680"

获取指定分值范围内的成员示例

zrangebyscore key min max[WITHSCORES][LIMIT offset count]

  1. 127.0.0.1:6379> zrangebyscore zset-key 600 650 withscores

  2. 1) "member1"

  3. 2) "600"

  4. 3) "member2"

  5. 4) "650"

移除成员示例

zrem key member[member...]

  1. 127.0.0.1:6379> zrem zset-key member1

  2. (integer) 1

  3. 127.0.0.1:6379> zrange zset-key 0 -1 withscores

  4. 1) "member2"

  5. 2) "650"

  6. 3) "member3"

  7. 4) "680"

  8. 127.0.0.1:6379>

简记方式:

字符串, key - value

列表与集合 ,类似链表,一个有序,一个无序,一个键存储多个值;

散列与有序集合,类似字典,map;储存多个 key-value; 有序集合的key 为member, value 为 score ,按照分值排序;





文章转载自知识追寻者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论