redis常用操做

string key操作

string <key:value>

set name john
get name

list

setnx <key value>
setnx gender male(分布式锁)
get gender
setnx goods_1 111
del goods_1
get goods_1

查找键
keys * //查找所有
keys *_1 //查找以“_1”结尾的
keys *a* //查找包含a的值

存在键名
exist <keys>

类型:
type <keys>

删除键:
del <keys>

清空所有
flashall

setex x 100 ruby

查看键有效期
ttl <keys> // -1永不过期,-2已经过期

设置过期时间
expire name 5

重命名
rename keys

redis默认有0-15个库一共16个, 默认是在0号数据库,库与库是隔离的;
select <数据库ID> //切换到1号库
l

list数组操作

队列、列表的子成员必须是string

lpush key value

rpush key value

linsert key after|brfore 指定元素 value

lindex key index

lrange key start stop

lset key index value

lrem key count value

添加子成员

//在左侧(前)添加一条或多条数据

lpush <key value1 value2...>

//在右侧(后)添加一条或多条数据

rpush <key value1 value2...>

 1 127.0.0.1:6379> rpush names zhaosi
2 (integer) 4
3 127.0.0.1:6379> lrange names 0 -1
4 1) "wangwu"
5 2) "lisi"
6 3) "zhangsan"
7 4) "zhaosi"
8 127.0.0.1:6379> rpush name a b c
9 (integer) 3
10 127.0.0.1:6379> rpush names a b c
11 (integer) 7
12 127.0.0.1:6379> lrange names 0 -1
13 1) "wangwu"
14 2) "lisi"
15 3) "zhangsan"
16 4) "zhaosi"
17 5) "a"
18 6) "b"
19 7) "c"

  

//在指定元素的左侧(前)右侧(后)添加一条或多条数据

linsert key before 指定元素 value1 value2...

linsert key after 指定元素 value1 value2...

eg:

 1 127.0.0.1:6379> linsert names before "zhangsan" yuan
2 (integer) 8
3 127.0.0.1:6379> lrange names 0 -1
4 1) "wangwu"
5 2) "lisi"
6 3) "yuan"
7 4) "zhangsan"
8 5) "zhaosi"
9 6) "a"
10 7) "b"
11 8) "c"

 1 127.0.0.1:6379> rinsert names after "b" haha
2 (error) ERR unknown command 'rinsert'
3 127.0.0.1:6379> linsert names after "b" haha
4 (integer) 9
5 127.0.0.1:6379> rinsert names after "b" haha
6 (error) ERR unknown command 'rinsert'
7 127.0.0.1:6379> lrange names 0 -1
8 1) "wangwu"
9 2) "lisi"
10 3) "yuan"
11 4) "zhangsan"
12 5) "zhaosi"
13 6) "a"
14 7) "b"
15 8) "haha"
16 9) "c"

获取列表成员:

根据指定的索引获取成员的值,负数下标从右边-1开始,逐个递减

lindex key index

eg:获取brother下表为2以及-2的成员:

 1 127.0.0.1:6379> del brother
2 (integer) 0
3 127.0.0.1:6379> lpush brother guanyu zhangfei liubei
4 (integer) 3
5 127.0.0.1:6379> lrange brother 0 -1
6 1) "liubei"
7 2) "zhangfei"
8 3) "guanyu"
9 127.0.0.1:6379> lindex 0
10 (error) ERR wrong number of arguments for 'lindex' command
11 127.0.0.1:6379> lindex brother 0
12 "liubei"
13 127.0.0.1:6379>

 1 127.0.0.1:6379> lrange brother 0 -1
2 1) "liubei"
3 2) "zhangfei"
4 3) "guanyu"
5 127.0.0.1:6379> lindex 0
6 (error) ERR wrong number of arguments for 'lindex' command
7 127.0.0.1:6379> lindex brother 0
8 "liubei"
9 127.0.0.1:6379> lindex -1
10 (error) ERR wrong number of arguments for 'lindex' command
11 127.0.0.1:6379> lindex beother -1
12 (nil)
13 127.0.0.1:6379> lindex brother -2
14 "zhangfei"
15 127.0.0.1:6379> lindex brother 2
16 "guanyu"
17 127.0.0.1:6379>

获取列表切片

闭区间,包括stop

lrange key start stop

eg:获取brother下表为0-2的成员

1 127.0.0.1:6379> lrange brother 0 2
2 1) "liubei"
3 2) "zhangfei"
4 3) "guanyu"
5 127.0.0.1:6379>

eg:获取最后两位

1 127.0.0.1:6379> lrange brother -2 -1
2 1) "zhangfei"
3 2) "guanyu"
4 127.0.0.1:6379>

获取列表长度

llen key

1 127.0.0.1:6379> llen names
2 (integer) 13
3 127.0.0.1:6379> llen brother
4 (integer) 3
5 127.0.0.1:6379>

设置指定索引值

lset key index value

 1 127.0.0.1:6379> lrange names 0 -1
2 1) "y"
3 2) "x"
4 3) "c"
5 4) "after"
6 5) "wangwu"
7 6) "lisi"
8 7) "yuan"
9 8) "zhangsan"
10 9) "zhaosi"
11 10) "a"
12 11) "b"
13 12) "haha"
14 13) "c"
15 127.0.0.1:6379> lset names 3 "before"
16 OK
17 127.0.0.1:6379> lrange names 0 -1
18 1) "y"
19 2) "x"
20 3) "c"
21 4) "before"
22 5) "wangwu"
23 6) "lisi"
24 7) "yuan"
25 8) "zhangsan"
26 9) "zhaosi"
27 10) "a"
28 11) "b"
29 12) "haha"
30 13) "c"
31 127.0.0.1:6379>

删除指定成员

lpop key //第一个成员出列

rpop key //最后一个成员出列

 1 127.0.0.1:6379> lrange name 0 -1
2 1) "x"
3 2) "b"
4 3) "after"
5 4) "a"
6 5) "b"
7 6) "c"
8 127.0.0.1:6379> lpop name
9 "x"
10 127.0.0.1:6379> lrange name 0 -1
11 1) "b"
12 2) "after"
13 3) "a"
14 4) "b"
15 5) "c"
16 127.0.0.1:6379>
 1 127.0.0.1:6379> lrange name 0 -1
2 1) "b"
3 2) "after"
4 3) "a"
5 4) "b"
6 5) "c"
7 127.0.0.1:6379> rpop name
8 "c"
9 127.0.0.1:6379> lrange name 0 -1
10 1) "b"
11 2) "after"
12 3) "a"
13 4) "b"
14 127.0.0.1:6379>

开发中经常使用rpush和lpop实现队列的数据结构,实现入列和出列

lrem key count value

//count表示删除的数据,value表示要删除的成员,该命令默认表示将列表从左侧前的count个value元素移除

//count==0,表示删除列表所有值为value的成员;

//count > 0,表示删除列表左侧开始的前count个value成员;

//count <0, 表示删除列表右侧开始的前count个value成员

 1 127.0.0.1:6379> lrange brother 0 -1
2 1) "A"
3 2) "B"
4 3) "C"
5 4) "A"
6 5) "B"
7 127.0.0.1:6379> lrem brother 0 A
8 (integer) 2
9 127.0.0.1:6379> lrange brother 0 -1
10 1) "B"
11 2) "C"
12 3) "B"

redis常用命令之string&list的更多相关文章

  1. 3.Redis常用命令:String

    字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value ...

  2. Redis常用命令(2)——String

    APPEND 格式:APPEND key value 作用:在key的键值后追加value,如果key不存在,则创建key,并存入value. 返回值:追加value后的字符串长度. 示例: 192. ...

  3. Redis常用命令

    Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...

  4. 第2讲 Redis常用命令与高级应用

    目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...

  5. Redis常用命令与高级应用

    附: 127.0.0.1:6379> set xiaofei 小飞 OK 127.0.0.1:6379> get xiaofei "\xe5\xb0\x8f\xe9\xa3\x9 ...

  6. Redis快速起步及Redis常用命令大全

    本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...

  7. Redis 常用命令 大全

    Redis 常用命令 发现几个很好的 Redis 常用命令汇总大全网页,分享给小伙伴们~ 1.Redis 命令参考 http://redisdoc.com/string/index.html 2.W3 ...

  8. No-sql之redis常用命令

    转自:http://blog.csdn.net/nicewuranran/article/details/51793760 No-SQL之Redis 介绍 Redis是一种基于内存存储的key-val ...

  9. Redis常用命令手册:服务器相关命令

    Redis提供了丰富的命令(command)对数据库和各种数据类型进行操作,这些command可以在Linux终端使用.在编程时,比如各类语言包,这些命令都有对应的方法.下面将Redis提供的命令做一 ...

  10. redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(附RedisClient工具简介 by:授客 QQ:1033553122 redis-cli工具 查看帮助 连接redis数据库 常用命令 exists key se ...

随机推荐

  1. Matplotlib 网格线

    我们可以使用 pyplot 中的 grid() 方法来设置图表中的网格线. grid() 方法语法格式如下: matplotlib.pyplot.grid(b=None, which='major', ...

  2. 开源 IM 系统 tinode 部署教程| WSL 环境

    背景 我们的需求是在本地部署一套 IM 系统,选择 tinode.为便于后端启动,我们采用 WSL 环境,配合 docker 安装数据库,来启动 IM 应用. 解决 WSL 启动前端和后台服务 cmd ...

  3. mysql8使用tmpfs内存磁盘当内存数据库的配置方法

    序: 内存关系数据库没有找到开源好用的,很多都是商用.虽然mysql有memory引擎,但写是整体锁表,没法用. 一直想将mysql放入内存中,搜索n次资料,没找到合适的,可能之前思路不对. 最近在测 ...

  4. oracle system 账户被锁或者忘记密码

    首先打开SQL PLUS 然后执行conn /as sysdba,不用输入口令直接登录. 登录成功! 若登录的时候出错,这是由于权限不足. 接下来打开[计算机管理],选择[本地用户和组],展开[组], ...

  5. Mac用自带软件QuickTime Player进行录屏

    ​ Mac电脑用自带软件QuickTime Player进行录屏的教程,几步就可以学会,挺简单的. 1.首先,找到并打开QuickTime Player软件.可以鼠标右键这个图标,选择"选项 ...

  6. IDEA的常用快捷键和文档注释

    IDEA的常用快捷键 Alt + 回车 导入包,自动修正 Ctrl + N 查找类 Ctrl + Shift + N 查找文件 Ctrl + Alt + N 格式化代码 Ctrl + Alt + O ...

  7. jmeterGUI&非GUI模式之如何减负性能调优

    jmeter之如何减负-实现稳定超高并发测试(性能调优)在测试过程中,初学者使用工具不当,添加众多监控组件,非常想看到实时报告,跑不了一会,jmeter就卡死甚至内存耗尽,只得重启,之前的统计报告没了 ...

  8. C# 教你如何终止Task线程

    我们在多线程中通常使用一个bool IsExit类似的代码来控制是否线程的运行与终止,其实使用CancellationTokenSource来进行控制更为好用,下面我们将介绍CancellationT ...

  9. Ping命令的基本使用

    一.Ping命令的基本使用 在网络中 ping 是一个十分强大的 TCP/IP 工具.我们通常会用它来直接 ping ip 地址,来测试网络的连通情况.它的作用主要为: 1.用来检测网络的连通情况和分 ...

  10. TCP和UDP协议之间的区别与原理

    一.TCP和UDP协议之间的区别 TCP是基于连接的,而UDP是基于非连接的. TCP传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如,传输文件,发送邮件,浏览网页 ...