目录
一、使用场景
二、常见命令
1、keys[空格]*
2、set get命令
3、select 整数
4、exists [key]
5、del [key]:
6、type,help
8、flushall
9、Flushdb
10、incr和decr
11、apend [key] [value]
12、批量操作
13、超时
14、strlen key
15、getset key value
16、getrange key start end
上一篇,我们成功安装和启动了redis,本篇,我们将熟悉redis常见的命令,并简单介绍String数据结构。
String的实际应用场景比较广泛:
(1)缓存功能:String字符串是最常用的数据类型,不仅仅是Redis,各个语言都是最基本类型,因此,利用Redis作为缓存,配合其它数据库作为存储层,利用Redis支持高并发的特点,可以大大加快系统的读写速度、以及降低后端数据库的压力。
(2)计数器:许多系统都会使用Redis作为系统的实时计数器,可以快速实现计数和查询的功能。而且最终的数据结果可以按照特定的时间落地到数据库或者其它存储介质当中进行永久保存。
(3)共享用户Session:用户重新刷新一次界面,可能需要访问一下数据进行重新登录,或者访问页面缓存Cookie,但是可以利用Redis将用户的Session集中管理,在这种模式只需要保证Redis的高可用,每次用户Session的更新和获取都可以快速完成。大大提高效率。
keys * 表示查询当前存储中,所有的存在的key
set key value:将value的值作为数据存储到redis中
get key:将key键值对应的value从存储获取出来。
操作如下:
127.0.0.1:6379> set name qinshihuang
OK
127.0.0.1:6379> set age 800
OK
127.0.0.1:6379> set sex male
OK
127.0.0.1:6379> get name
"qinshihuang"
127.0.0.1:6379> get sex
"male"
127.0.0.1:6379> get age
"800"
127.0.0.1:6379> keys *
1) "sex"
2) "age"
3) "name"
用于切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默认情况下整数的取值区间是0-15,因为Redis默认是16个数据库库。
功能不常用了。不同的分库中的数据时互不干扰的。
表示判断当前内存中是否有你要的key值存在。
get也可以判断key值的存在,redis默认情况下value的数据可以支持到512M。get命令判断,先读取数据,造成了浪费;
127.0.0.1:6379[1]> keys *
1) "name"
127.0.0.1:6379[1]> exists name gender
(integer) 1
127.0.0.1:6379[1]> set gender male
OK
127.0.0.1:6379[1]> exists name gender
(integer) 2
127.0.0.1:6379[1]>
将key值的数据从内存删除。它是一个通用命令,在其它数据结构中也能使用。
type:查看当前数据的类型
Help:查看命令的使用
将当前内存的数据保存到持久化文件dump.rdb中。
127.0.0.1:6379[1]> set haha haha
OK
127.0.0.1:6379[1]> set laleheh hahakd
OK
127.0.0.1:6379[1]> set en enalhf
OK
127.0.0.1:6379[1]> save
OK
127.0.0.1:6379[1]>
停止服务:redis-server shutdown
内存数据确实丢失了,但是重新启动服务,加载指定的dump.rdb文件,就可以取到保存的数据。
将当前服务的所有数据清空(包括持久化文件中的数据)。
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
只清空当前分库的数据。
自增,自减 步数是1
incrby [key] [步数]
decrby [key] [步数]
>apend [key] [value]:在存在的key对应的value数据中拼接传递的内容
例如:旧数据 越狱第一季 越狱第一季第二集
127.0.0.1:6379> set tv yueyudiyiji
OK
127.0.0.1:6379> append tv dierji
(integer) 17
127.0.0.1:6379> get tv
"yueyudiyijidierji"
127.0.0.1:6379>
>mset mget 批量获取,批量写入,只能再本机的节点执行,不支持分布式。
127.0.0.1:6379> mget num1 tv haha
1) "90"
2) "yueyudiyijidierji"
3) (nil)
127.0.0.1:6379> mset location beijing gender male
OK
127.0.0.1:6379> keys *
1) "location"
2) "num1"
3) "tv"
4) "gender"
127.0.0.1:6379>
>expire [key] second:设定当前key对应的数据超时时间(秒)
>ttl [key] 查看倒计时
127.0.0.1:6379> expire num1 100
(integer) 1
127.0.0.1:6379> ttl num1
(integer) 29
超时之后,ttl结果是什么? 删除数据,key的超时时间变成-2,-1 表示永久数据。
精度超时
>pexpire [key] 毫秒 :显示的是描述,代码客户端获取数据时毫秒
127.0.0.1:6379> pexpire location 10000
(integer) 1
127.0.0.1:6379> ttl location
(integer) 7
求key指向字符串的长度。
127.0.0.1:6379> get name
"taotao"
127.0.0.1:6379> strlen name
(integer) 10
127.0.0.1:6379>
修改原来key的对应值,并将旧值返回。如果原来值为空,则返回空,并设置旧值。
127.0.0.1:6379> get name
"taotao"
127.0.0.1:6379> getset name hujintao
"taotao"
127.0.0.1:6379> get name
"hujintao"
127.0.0.1:6379>
获取子串。记字符串的长度为len,把字符串看作一个数组,而redis是以0开始计数的,所以start 和end的取值范围为0到len-1。
127.0.0.1:6379> get name
"hujintao"
127.0.0.1:6379> getrange name 2 5
"jint"
127.0.0.1:6379>