1.4、进入redis命令窗口:
执行 redis-cli 即可进入redis命令窗口,然后就可以执行redis命令了。
1.5、redis命令大全
1.6、redis介绍相关知识
默认端口6379 默认16个数据库,类似数组的下标从0开始,初始默认使用0号库 使用select 来切换数据库,如:select 1,切换到第2个库 统一密码管理,所有的库密码相同 dbsize:查看当前数据库的key的数量 flushdb:情况当前库 flushall:清空全部库 redis是单线程+多路IO复用技术。 多路复用是指使用一个线程来检测多个文件描述符(socket)的就绪状态,比如调用select和poll函数, 传入多个文件描述符,如果有一个文件描述符就绪,则返回,否则阻塞到超时,得到就绪状态后进行真 正的操作可以在同一个线程里执行,也可以启动线程执行(比如使用线程池) 串行 vs 多线程+锁(memcached) vs 单线程+多路复用(redis) (与memcache三不同:支持多数据类型,支持持久化,单线程+多路复用)
redis6.0中提供了多线程,命令解析和io数据读写这部分采用了多线程,而命令的执行还是采用的是单线 程,多个客户端发送来的命令会在同一个线程去执行,相当于排队执行,效率极高。
2、redis 5大数据类型
这里说的数据类型是value的数据类型,key的类型都是字符串。 5种数据类型:
redis字符串(String)
redis列表(List)
redis集合(Set)
redis哈希表(Hash)
redis有序集合(Zset)
哪里去获取redis常用数据类型操作命令:http://redis.cn/commands.html
2.1、redis键(key)
keys *:查看当前库所有的key exists key:判断某个key是否存在
type key:查看你的key是什么类型
del key:删除指定的key数据
unlink key:根据value删除非阻塞删除,仅仅将keys从keyspace元数据中删除,真正的删除会在 后续异步中操作。
expire key 10:为指定的key设置有效期10秒
ttl key:查看指定的key还有多少秒过期,-1:表示永不过期,-2:表示已过期
select dbindex:切换数据库【0-15】,默认为0
dbsize:查看当前数据库key的数量
flushdb:清空当前库
flushall:通杀全部库
2.2、redis字符串(String)
2.2.1、简介 String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。 String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。 String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M
2.2.2、常用命令
set:添加键值对
127.0.0.1:6379> set key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEPTTL] [NX|XX] [GET]
NX:当数据库中key不存在时,可以将key-value添加到数据库
XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
EX:key的超时秒数
PX:key的超时毫秒数,与EX互斥
value中若包含空格、特殊字符,需用双引号包裹
**get:获取值:**get <key>
示例
127.0.0.1:6379> set name ready
OK 127.0.0.1:6379> get name
"ready"
apend:追价值:
append <key><value>
将给定的value追加到原值的末尾。
示例
127.0.0.1:6379> set k1 hello
OK 127.0.0.1:6379> append k1 " world" (integer) 11
127.0.0.1:6379> get k1
"hello world"
strlen:获取值的长度:
strlen<key>
示例
127.0.0.1:6379> set name ready
OK 127.0.0.1:6379> strlen name
(integer) 5
setnx:key不存在时,设置key的值
setnx <key><value>
示例
127.0.0.1:6379> flushdb #清空db,方便测试
OK 127.0.0.1:6379> setnx site "itsoku.com" #site不存在,返回1,表示设置成功 (integer) 1 127.0.0.1:6379> setnx site "itsoku.com" #再次通过setnx设置site,由于已经存在了,所以设 置失败,返回0 (integer) 0
incr:原子递增1
incr<key>
将key中存储的值增1,只能对数字值操作,如果key不存在,则会新建一个,值为1
示例
127.0.0.1:6379> flushdb #清空db,方便测试
OK 127.0.0.1:6379> set age 30 #age值为30
OK 127.0.0.1:6379> incr age #age增加1,返回31 (integer) 31
127.0.0.1:6379> get age #获取age的值 "31"
127.0.0.1:6379> incr salary #salary不存在,自动创建一个,值为1 (integer) 1
127.0.0.1:6379> get salary #获取salary的值 "1"
decr:原子递减1
decr <key>
将key中存储的值减1,只能对数字值操作,如果为空,新增值为-1
示例
127.0.0.1:6379> flushdb #清空db,方便测试
OK 127.0.0.1:6379> set age 30 #age值为30 OK
127.0.0.1:6379> decr age #age递减1,返回29 (integer) 29
127.0.0.1:6379> get age #获取age的值 "29"
127.0.0.1:6379> decr salary #salary不存在,自动创建一个,值为-1 (integer) -1
127.0.0.1:6379> get salary #获取salary "-1"
incrby/decrby:递增或者递减指定的数字
incrby/decrby <key> <步长>
将key中存储的数字值递增指定的步长,若key不存在,则相当于在原值为0的值上递增指定的步 长。
示例
127.0.0.1:6379> set salary 10000 #设置salary为10000 OK
127.0.0.1:6379> incrby salary 5000 #salary添加5000,返回15000 (integer) 15000 127.0.0.1:6379> get salary #获取salary "15000"
127.0.0.1:6379> decrby salary 800 #salary减去800,返回14200 (integer) 14200
127.0.0.1:6379> get salary #获取salary "14200"