前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全民学NoSQL之KV类型数据库Redis

全民学NoSQL之KV类型数据库Redis

作者头像
公众号guangcity
发布2019-09-20 16:25:10
4850
发布2019-09-20 16:25:10
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

全民学NoSQL之KV类型数据库Redis

0.导语

每个人都应该懂点NoSQL知识; 每个人都应该学点Redis知识; 每个人都应该看一下这篇文章;

Let's Go,发车了,第一弹:Redis的字符串类型使用。

1.安装

官网地址:

https://redis.io/

编译与安装:

代码语言:javascript
复制
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make

服务端启动:

代码语言:javascript
复制
src/redis-server

客户端启动:

代码语言:javascript
复制
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

3.字符串类型使用

键不存在:

代码语言:javascript
复制
setnx k1 asda

不存在的才创建,存在不修改

代码语言:javascript
复制
set k1 asd nx

存在的修改,不存在不创建

代码语言:javascript
复制
set k1 asd xx 

获取类型

代码语言:javascript
复制
type k1

获取标记

代码语言:javascript
复制
k1:"aaa",k2:5
127.0.0.1:6379> object encoding k1
"embstr"
127.0.0.1:6379> object encoding k2
"int"

MSET设置多个键的字符串值

代码语言:javascript
复制
127.0.0.1:6379> MSEt k3 1151 k4 1231
OK

键不存在时,设置字符串。只有全部不存在才生效。

代码语言:javascript
复制
127.0.0.1:6379> msetnx k1 ass k2 asda k5 "asda"
(integer) 0
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
4) "key1"
5) "k4"
127.0.0.1:6379> get k1
"asd"
127.0.0.1:6379> msetnx k6 asda k5 "asda"
(integer) 1
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
3) "k3"
4) "key1"
5) "k5"
6) "k4"
7) "k6"

查找键:

代码语言:javascript
复制
keys pattern

pattern取值:

  • *任意长度字符
  • 任意一个字符
  • []字符集合,表示可以是集合中的任意一个

键类型:

  • type key
  • object encoding key

键是否存在:

  • exists key

键重命名:

  • rename key newkey
  • renamenx key newkey

键删除:

  • del key [key …]

xxx为0-15编号,代码数据库编号

代码语言:javascript
复制
redis-cli -n xxx

例如:

代码语言:javascript
复制
light@city:~/bigdataproj/soft$ redis-cli -n 1
127.0.0.1:6379[1]> set k1 11
OK
127.0.0.1:6379[1]> quit
light@city:~/bigdataproj/soft$ redis-cli -n 2
127.0.0.1:6379[2]> keys *
(empty list or set)
127.0.0.1:6379[2]> quit

flushdbflushall区别:

flushdb只会清空当前数据库

代码语言:javascript
复制
light@city:~/bigdataproj/soft$ redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> quit
light@city:~/bigdataproj/soft$ 
light@city:~/bigdataproj/soft$ redis-cli -n 1
127.0.0.1:6379[1]> keys *
1) "k1"

flushall会清空所有数据库

代码语言:javascript
复制
light@city:~/bigdataproj/soft$ redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> flushall
OK
127.0.0.1:6379> quit
light@city:~/bigdataproj/soft$ redis-cli -n 1
127.0.0.1:6379[1]> keys *
(empty list or set)

select数据库之间切换

代码语言:javascript
复制
light@city:~/bigdataproj/soft$ redis-cli
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "k1"
127.0.0.1:6379[1]> select 15
OK
127.0.0.1:6379[15]> keys *
(empty list or set)
127.0.0.1:6379[15]> set k15 2
OK
127.0.0.1:6379[15]> keys *
1) "k15"
127.0.0.1:6379[15]> 

中文存储获取:

先修改键keys值为中,然后使用--raw登陆,就可以看到中文。

代码语言:javascript
复制
light@city:~/bigdataproj/soft$ redis-cli
127.0.0.1:6379> set keys 中 xx     
OK
127.0.0.1:6379> get keys
"\xe4\xb8\xad"
127.0.0.1:6379> strlen keys
(integer) 3
127.0.0.1:6379> quit
light@city:~/bigdataproj/soft$ redis-cli --raw
127.0.0.1:6379> get keys
中

getset获取原来值,并修改。

代码语言:javascript
复制
127.0.0.1:6379> get k1
1
127.0.0.1:6379> getset k1 b
1
127.0.0.1:6379> get k1
b

megt获取多个key值

代码语言:javascript
复制
127.0.0.1:6379> mget k1 k2
b
1

append追加

代码语言:javascript
复制
127.0.0.1:6379> get k1
b
127.0.0.1:6379> append k1 hj
3
127.0.0.1:6379> get k1
bhj

setrange覆盖字符串 setrange key offset value

代码语言:javascript
复制
127.0.0.1:6379> get k1
bhj
127.0.0.1:6379> setrange k1 1 2
3
127.0.0.1:6379> get k1
b2j

getrange获取子串 getrange key start end 可以正也可以负向获取

代码语言:javascript
复制
127.0.0.1:6379> get k1
b2j
127.0.0.1:6379> getrange k1 0 1
b2
127.0.0.1:6379> getrange k1 0 -1
b2j
127.0.0.1:6379> getrange k1 -2 -1
2j

步长增减

  • INCR key
  • DECR key

incr递增key

代码语言:javascript
复制
127.0.0.1:6379> set k1 99
OK
127.0.0.1:6379> INCR k1
100
127.0.0.1:6379> INCR k1
101
127.0.0.1:6379> INCR k1
102
127.0.0.1:6379> INCR k1
103
127.0.0.1:6379> INCR k1
104
127.0.0.1:6379> incrby k1 5
109
127.0.0.1:6379> INCRBYFLOAT k1 5.5
114.5

位图操作

setbit key offset value

setbit k1 1 1就是01000000对应的数字是64,对应的字符就是@,后面setbit k1 7 1再这个基础上偏移7位设置1后就是01000001对应的数字是65,对应的字符就是A。

代码语言:javascript
复制
127.0.0.1:6379> setbit k1 1 1
(integer) 0
127.0.0.1:6379> get k1
"@"
127.0.0.1:6379> setbit k1 7 1
(integer) 0
127.0.0.1:6379> get k1
"A"
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 全民学NoSQL之KV类型数据库Redis
    • 0.导语
      • 1.安装
        • 3.字符串类型使用
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档