每个编程语言的数据类型中,一定会有,string类型,和数值类型,也都会对字符串取值,赋值,截取,连接等,对于数值呢,加减乘除,自增,自减等,redis也同样,我们看看redis是怎样操作这些处理的常用命令呢。
- get,set,del等命令,在我前面的文章中,有提到,我就不重复举例了
- setnx(当key存在时,设置,返回-1,当key存在时,不赋值,返回0,可用做分布式锁)
127.0.0.1:6379> keys *
1) "name"
2) "iosoft"
127.0.0.1:6379>
127.0.0.1:6379> setnx age 18
(integer) 1
127.0.0.1:6379> keys *
1) "age"
2) "name"
3) "iosoft"
127.0.0.1:6379>
127.0.0.1:6379> get name
"iosoft2020"
127.0.0.1:6379>
127.0.0.1:6379> setnx name test
(integer) 0
127.0.0.1:6379> get name
"iosoft2020"
127.0.0.1:6379>
- getrange(从指定的字符串中,取出指定范围的字符串),下边例子是从iosoft2020中取出2020的例子
127.0.0.1:6379> get name
"iosoft2020"
127.0.0.1:6379> getrange name 6 10
"2020"
- strlen (取出字符串的长度)
127.0.0.1:6379> get name
"iosoft2020"
127.0.0.1:6379> strlen name
(integer) 10
- mget(取出多个key的值)
127.0.0.1:6379> keys *
1) "age"
2) "name"
3) "iosoft"
127.0.0.1:6379> mget age name
1) "18"
2) "iosoft2020"
- append key 要连接的字符串(连接字符串的值,key不存在的情况下,创建字符串,返回字符串的长度)
127.0.0.1:6379> append str1 iosoft2020
(integer) 10
127.0.0.1:6379> keys *
1) "name"
2) "age"
3) "str1"
4) "iosoft"
5) "num3"
6) "num2"
127.0.0.1:6379> append str1 iosoft2021
(integer) 20
127.0.0.1:6379> get str1
"iosoft2020iosoft2021"
- incr key(变量自增,key不存在的情况下,将key初始化为1)
127.0.0.1:6379> keys *
1) "age"
2) "name"
3) "iosoft"
127.0.0.1:6379>
127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> keys *
1) "num"
2) "age"
3) "name"
4) "iosoft"
127.0.0.1:6379> get num
"1"127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> get num
"3"
- decr key(变量自减,key不存在的情况下,将key初始化为-1)
127.0.0.1:6379> keys *
1) "name"
2) "age"
3) "iosoft"
4) "num"
127.0.0.1:6379>
127.0.0.1:6379> decr num1
(integer) -1
127.0.0.1:6379> get num1
"-1"
127.0.0.1:6379> decr num1
(integer) -2
127.0.0.1:6379> decr num1
(integer) -3
127.0.0.1:6379> get num1
"-3"
- incrby key 数值(变量每次增加几,key不存在的情况下,将key初始化为几)
127.0.0.1:6379> incrby num2 10
(integer) 10
127.0.0.1:6379> get num2
"10"
127.0.0.1:6379> incrby num2 10
(integer) 20
127.0.0.1:6379> get num2
"20"
- decrby key 数值(变量每次减几,key不存在的情况下,将key初始化为几)
127.0.0.1:6379> decrby num3 5
(integer) -5
127.0.0.1:6379> get num3
"-5"
127.0.0.1:6379> decrby num3 5
(integer) -10
127.0.0.1:6379> get num3
"-10"
incr,decr,incrby,decrby都是原子性操作,许多高并发网站,使用这些函数完成,常规计数,点击量,点赞数等并发对变量加减的操作,再一点,这些函数只能对数字进行自增或自减,当对字符串自增或自减时,会抛出下边的错误。
127.0.0.1:6379> type str1
string
127.0.0.1:6379> incr str1
(error) ERR value is not an integer or out of range
实际开发过程中,按照需求我们使用这些命令,怎么样,和其它的编程语言大同小异吧。