redis通用操作

 

一  redis 通用的命令,主要是针对key的增删改查,移动,设置有效期等操作。

set  age  28  --添加key

get  age  --取出key

 

1 查看有哪些键值对

keys    *  --当前有哪些key

keys    s* --模糊查询,key值是s开头的

keys    sit[ey]  --模糊查询,匹配前面是sit并且第四位是 e或y的键

keys    sit?e    --模糊查询,查询sit开头,第四位未知,第5位是e的key

 

2 返回随机的key

random  key  --例如运用于抽奖

3  type  age     --看age是什么类型的

4 exists  age  --看名字叫age的键是否存在,如果存在返回1

5 del age  --删除名字叫age的key

6 rename  age   ages  --将age改名为ages

7  renamenx  age  ages --nx是not exists的意思,当修改的名字ages在系统中不存在,才会修改成功。

rename 修改的名字ages如果再系统中存在,那么会覆盖原来的内容。

 

8 移动:

redis默认安装后有16个数据库,我们的命令行窗口,默认操作的是0号数据库,如果想把在0号数据库

刚刚建的key移动到1号数据库,命令如下

move age 1  --移动到1号库

select  1    --切换到1号数据库

get  age  --查询key

 

9  在memcached中有生命周期的概念,在redis中默认新建的key都是长久有效的状态,如何给新建的key加上生命周期呢,代码如下。

ttl  age --查询age的生命周期, 返回值 当查询的建不存在或者永久有效时候,返回的都是-1,如果不是长久有效,返回的是对应的秒数。

expire  key   100  --设置key的生命周期为100s

pttl  age  --查看key的生命周期,以毫秒方式返回

persist  key --设置key的生命周期为长久有效。

 

二 :redis字符串操作

 

1 flushdb  --冲刷掉库中的所有 key

2 set  age  28  ex 10/ px  1567    --初始key时候设置生命周期,ex

set key value [ex 秒数] / [px 毫秒数]  [nx] /[xx]

 

: set a 1 ex 10 , 10秒有效

Set a 1 px 9000  , 9秒有效

: 如果ex,px同时写,以后面的有效期为准

set a 1 ex 100 px 9000, 实际有效期是9000毫秒

 

nx: 表示key不存在时,执行操作

xx: 表示key存在时,执行操作

 

3  mset key  value key1 value1 --设置多个key和value

例如 mset a 1 b 2 c 3

4 mget key key1 --连续取出多个value

例如 mget a b c

 

5 修改value中某一位的值

setrange key offset value

作用:把字符串的offset偏移字节,改成value

redis 127.0.0.1:6379> set greet hello

OK

redis 127.0.0.1:6379> setrange greet 2 x   --不hello第二位的l改查x

(integer) 5

redis 127.0.0.1:6379> get greet

"hexlo"

 

6 append  word  aa --追加,在key是word的value后面追加aa

 

7  获取value的一小部分

getrange area  1 4  --获取名字为area的key对应的value的 1到4 位

getrange area  0 -4  --获取名字为area的key对应的value的 0为到 倒数4位

 

8 getset key newvalue --获取旧值,覆新值

例如  set name  chekl

getset name cheklone

--输出 chekl 并且name对应的value改成cheklone

 

9 set  age 29

incr age --输出值30,自增1

decr age --输出值28,自减1

incrby  age 5 --自增5

 

 例子:把随机的A-Z 任意字母,转换成对应的小写字母

set  char  A

setbit  char 2   1 -- setbit是将A转换成相应的ascli码,A是65  对应的2进制数是 01000001

a 对应是97  二进制数是 01100001  如果将A转换成a,只需要将二进制中左数第二位的0 置换成1 就行。

 

 

 三 link 操作

lpush  character  a--从左侧向link表中插入  a

rpush  character b--从右侧向名字是character的link表插入  b,

rpush   character  c--从右侧插入c

lrange character 0 -1 --查看link表character中的所有内容,输出结果是 a b c

lrange  character  1  2--查看link表中从1开始,2位,输出结果是 b c,因为下标从0开始

 

2  从左右2边弹出值

lpop character --弹出最左边的a

lrange character 0 -1   --此时查看,链表中的值只剩下 b c

rpop character --弹出最右边的  c

lrange character 0 -1   --此时查看,链表中的值只剩下 b

 

3 删除

lpush  character  a  b c  a b  d  a

lrem  character  1  b  --从左到右顺序,删除第一次出现的b

lrange character 0 -1   --此时查看,链表中的值只剩下 a  c  a b d a

lrem character -2  a  --从链表尾部删除 a

 

4 剪切

rpush cha  a b c d e f

lrange cha  0 -1  --查看

ltrim  cha 2  5  --剪切从2到5  ,执行结果是 c d e f

ltrim  cha 1  -2  --从后往前截,执行结果是  d e

5  取其中某一个

lindex cha  1 --取第一个

6 查看链表长度

llen cha

 

7 linsert命令,在链表中查找值并插入

rpush  num  1  3  5  7  9

linsert  num before 3 2       --插入2 在3 的前面

linsert num after 9  10  --在9后面插入10

如果存在link 值是 1 3 5 9 9存在2个9的情况,那么执行结果为 1 3 5 9 10 9 只会在第一次出现的符合

条件的值后面执行操作,执行一次就会结束。

8 rpoppush 右边弹出,左边塞入

例如 链表task

rpush task a b c d

rpoppush task job  --把task链表中的最右侧d 放入链表job中。

 

总结:主要对link链表的操作,主要功能有新建链表,从左侧或右侧插入值,查询整个链表中内容,查看链表

长度,从左右弹出值,删除和剪切链表,最后对2个链表就行右边弹出左边塞入的操作。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(redis)