这两天又熟悉了下redis的操作,整理了一下常用语法,如有不对,欢迎拍砖


一.简单介绍及特性

  redis是NoSql中的一种,开源,通过key-value存储,数据库在内存中,也可以将数据库写入磁盘,默认端口6379

数据库默认端口
mysql3306
redis6379
memcache11211
mongodb27017

二.常用redis.conf配置

daemonize  	如果需要在后台运行 改成 yes
pidfile		配置多个pid的地址
bind		绑定IP,设置后只接受来自该IP请求
port		监听端口,默认为6379
timeout		设置客户端连接时的超时时间,单位为秒
loglevel	分为4级,debug,verbose,notiee,warning
logfile		配置log文件地址
databases	设置数据库的个数,默认使用的数据库为0
save		设置redis进行数据库镜像的频率
rdbcompress	在进行镜像备份时,是否进行压缩
dbfilename	镜像备份文件的文件名
dir			数据库镜像备份的文件放置路径
slaveof		设置数据库为其他数据库的从数据库
masterauth	主数据库连接需要的密码验证
maxchents	限制同时连接的客户数量
maxmemory	设置redis能够使用的最大内存
appendonly	开启append only模式

三.数据类型

  1. string类型

set 设置key对应的值为string类型的value
	set name astar
get 获得key对应值
	get name
setnx 设置key 如果key已经存在,返回0,否则插入
	setnx name astar
setex 设置key指定有效期
	setex ha 10 red
setrange 设置指定key的value值为指定字符串(替换)
	setrange name 6 gmail.com
mset 一次设置多个key的值
	mset key1 a1 key2 a2
msetnx 一次设置多个key,不会覆盖已经存在的值
	mestnx key4 a4 key1 aa
getset 设置key的新值并返回key的旧值
	getset key4
getrange 获得指定字符串(给范围)
	getrange 0 5
mget 一次获得多个值
	mget key1 key2
incr 对key的值进行递增
	incr key6
incrby	加指定值
	incrby key6 5
decr 对key的值进行递减
	decr key6
decrby 减指定值
	decrby key6 5
append 给指定key的字符串追加value
	append key6 bbb
strlen 获得指定key的值指定长度
	strlen key6

 2.hash类型

是一个string类型的field和value
hset 设置hash field为指定指,如果key不存在,刚先创建
	hset myhash field1 hello (myhash 类似于表的慨念)
hget 获得
	hget myhash field1
和string类型 的命令基本相似,只在前面加个 'h'

hexists 判断某个值是否存在
	hexists myhash field2
hlen 返回指定hash的健数
	hlen myhash
hdel 删除指定hash的field
	hdel myhash field2
hkeys 返回hash的所有fiels
	hkeys myhash
hvals 返回hash的所有value
	hvals myhash
hgetall 获取某个hash中全部的field 和value
	hgetall myhash

3.list类型

是链表结构 主要功能是push,pop,获取一个范围的所有值

lpush 在key的list里往头部添加字符串元素
	lpush mylist 'world'
	lpush mylist 'hello'
lrange 取list里数据
	lrange mylist 0 -1
rpush 从尾部添加元素
	rpush list2 'mysql'
	rpush list2 'app'
linsert 在key里的list特定的值后面添加字符串
	linsert list2 before 'app' 'php'
lset 设置list中指定下标的值替换
	lset list 0 'world'
lrem 从key对list中删除n个和value相同的元素
	lrem list 1 'world'
ltrim 保留指定key的值范围内的数据
	ltrim list 0 -1
lpop 从list头部删除元素,并返回删除元素
	lpop mylist
rpop 从list尾部删除元素
	rpop mylist
rpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部
	rpoplpush mylist1 mylist2
lindex 返回名称为key的list中index 位置的元素
	lindex mylist1 1
llen 返回list的长度
	llen mylist1

4.sets类型

集合,是string类型的无序集合

sadd 向名称为key的set中添加元素
	sadd myset hello
smembers 查看集合成员
	smembers myset
srem 删除set中的元素
	srem myset hello
spop 随机返回并删除一个元素
	spos myset
sdiff 返回所有给定key与第一个值的差集
	sdiff myset1 myset2 myset3
sdiffstore 将返回的差集存为另一个key
	sdiffstore myset4 myset1 myset2(存在myset4)
sinter 返回交集
	sinter myset1 myset2
sinerstore 交集存
	sinterstore myset4 myset1 myset2
sunion 返回并集
	sunion myset1 myset2
sunionstore 并集存
	sunionstore myset4 myset1 myset2
smove 移除第一个元素 移动到第二个元素
	smove myset1 myset2 three
scard 返回set元素的个数
	scard myset1
sismember 测试名称是否为set的元素
	sismember myset1 one
srandmember 随机返回一个元素
	srandmember myset1

5.zset类型(有序集合)

sets类型的升级

zadd 添加一个元素并指定key
	zadd myzset 1 one
zrange 输出值	
	zrange myzset 0 -1 withscores
zrem 删除名称为key的zset中元素
	zrem myzset one
zincrby 改变key的值
	zincrby zset1 2 one
zrank 返回zset中的排序	 小=》大
	zrank myzset1 tow
zrevrank 返回zset中排序  大=》小	
	zrevrank myzset1 tow
zrevrange 输出排序
	zrevrange myzset1 0 -1 withscores
zrangebyscore 找到key值的指定元素
	zrangebyscore myzset1 2 3 withscores
zcount 返回集合中score数量
	zcount myzset1 2 4
zcard 所有元素个数
	zcard myzset1
zremrangebyrank 删除集合中指指定排序的类型
	zremrangebyrand myzset1 1 1

四.redis常用命令

 1.键值相关命令

keys 返回满足给定设置的key
	keys *
exists 确认一个key是否存在
	exists name
del 删除一个key
	del name
expire 设置一个key的过期时间
	expire name 10
ttl 查看key过期时间
	ttl name
select 进入数据库
	select 0
move 将当前数据库中的key转移到期他数据库中
	move name 1
persist 取消过期时间
	persist name
randomkey 随机返回key空间的一个key
	randomkey
rename 重命名 key
	rename name name1
type 返回值 的类型
	type name
auth 缓权
	auth password

 2.服务相关命令

ping 测试连接是否成功
	ping
echo 在命令行输出内容
	echo aaa
select 选择数据库(0-15)
	select 1
quit 退出连接
	quit
dbsize 返回当前数据库中key的数目
	dbsize
info 获取信息和统计
	info
config get 实时传储收到的请求
	config get *
flushdb 删除当前选择数据库中所有key
	flushdb
flushall 删除所有数据库所有key
	flushall

五.常用特殊配置

安全性:
	requirepass password    设置密码

主从复制:
	slave : slaveof 192.168.1.1 6379
			masterauth password

事务处理:
	multi	打开事务
	  执行命令
	exec	执行事务
	discard	取消事务
	
	watch name 监视指定的key ,当exec时,watch发生变化,事务失败
		
持久化机制:
	snapshotting(快照)默认方式 (数据写入二进制文件)
	Append-only file(缩写aof)的方式 (记录执行的命令)
	
	配置文件:
	快照
		save 900 1
		save 300 10
		save 60 100
	aof
		appendonly yes
		appendfsync always //收到写命令就立即写入磁盘,最慢,保证完整性
		appendfsync everysec // 每秒钟写入磁盘 中
		appendfsync no 		//完全依赖os,性能好,持久化没保证

发布订阅消息:
	subscribe tv1		监听信息
	subscribe tv1 tv2   监听信息
	
	publish tv1 name     发布信息

虚拟内存的使用:

	vm-enabled yes			#开启vm功能
	vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径
	vm-max-memory 100000	#redis使用的最大内存上限
	vm-page-size 32			#每个页面的大小32字节
	vm-pages 123454443		#最多使用多少页面
	vm-max-threads 4		#用于执行value对象换入的工作线程数量
	
	really-use-vm yes 		#是否确认启用vm	
	
	

六.redis启动与停止

启动 Redis 服务
redis-server redis.conf
将 Redis 作为 Linux 服务随机启动
vi /etc/rc.local, 加入代码:
/root/install/redis-2.4.9/src/redis-server
redis客户端连接
redis-cli
停止redis服务:
redis-cli shutdown

看详细文档:

 中文:http://www.jb51.net/books/434622.html

 英文:https://github.com/phpredis/phpredis