netstat -tunpl | grep redis-server
显示端口在使用
netstat–tunpl | grep 6379
解决:
ps–aux | grep redis-server
pkill redis-server
Kill -9 9999
kill -9 1762
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
/usr/local/redis/bin/redis-cli
数据类型
nosql
数据库中之
redis
数据库
一、NoSQL ,
(
Not Only SQL
),泛指非关系型数据库。
1.NoSql的特点?
a).Key-value b).不支持sql语句 c.)没有表结构
2常见关系型数据库与非关系型数据库?
关系型:mysql、Oracle、SQLServerr等;
非关系型:redis, mongodb等;
3.redis支持哪些数据类型?
hash(哈希);string(字符串);list(链表);set(集合); Zset(有序集合)
二、redis安装
- 1.Reids安装需要哪几步?
从安装到使用4步;
a.)解压软件 tar –zxfv
b.)make编译;注意:编译!=安装;
c.)安装 make PREFIX= 目录 install;
d.)复制config,启动服务;注意:server后面跟那个conf 就由哪个conf启动
- 2.如何将Redis安装为服务?
config 17行 daemonize 改为yes; 查看行号 :set un;
- 3.如何重启Redis?
查看 netstat –tunpl | grep redis
pkill redis-server
查看 pr –ef |grep redis;
4.redis 端口 6379
三、Redis安全性设置
1.如何设置密码?
Redis.conf [108] requirepass foobared 可能用到命令:set nu ;
2.如何登录?
2.1:方法1 ./redis-cli –a password
2.2:方法2 登录后 auth password
四、Redis-
String,hash,list,set,Zset5种数据类型和其他命令--详见redis-1表
1、string键值对
set name xiaoyun
get name
setnx
setex color 10 red,10秒后过期
mset
键名
1
值
1
键名
2
值
2……………
msetnx
键名
1
值
1
键名
2
值
2……………
getset name xiaop设置新值返回旧值
strlen name 返回长度
getrange name 0 3
mget name age
incr age
自增操作,每执行一次自动加
1
incrby age 100 追加100
decr
同
incr
一样,自减操作。decr age
decrby
指定减去的值。decrby age 100
append 追加字符串
2、哈希类型
1.Hash数据类型?
像我们上学时候的课本?eg:语文 ===key 课文标题===field 课文内容 === value
hset key
field value例:hset ha1 name xiaopen
hget key
field例:hget ha1 name
hsetnx如果field存在则设置不成功,返回0
hmset key(
哈希的名称
) field1 value1 field1 value2例:hmset ha2 name xiaozhao age 30
hmget ha2 name age
hincrby key field number(
加的数值
)例:
hincrby ha2 age 100
hexists key field 例hexists ha2 age
hdel key field
hkeys key
hvals key
hgetall
返回哈希里面所有的
field
和
value
3
、
lists
类型及操作
栈,先进后出;队列,先进先出
lpush key value 例lpush list1 one 类似
lrange key 0 -1
rpush rpush list zero
从尾部向链表里面添加数据(字符串类型)
lset list 1 dagang
linsert key before tow xiaogang
在
two
元素的前面添加一个元素(
xiaogang
)
lset list 1 xiaobai
lindex list 1
ltrim list 1 2
lpop
从头部删除链表中的元素,返回删除的元素 pop list
rpop
从尾部删除链表中的元素,返回删除的元素
lindex key
位置
返回指定位置的元素
llen
返回链表中元素的个数
4
、
set
(集合)类型-唯一、无序
sadd set1 one two nihao xiaogang
smember set1获取
srem set1 one删除指定元素
spop set1
随机删除集合里面某个元素,返回该元素
sdiff set1 set2 差集
sdiffstore set3 set1 set2
sinter set1 set2 交集
sinterstore set4 set1 set2
sunion set1 set2 并集
sunionstore set5 set1 set2
smove set2 set1 xiaoli 移动
scard set5
返回集合中元素的个数
sismember set1 xiaolongbao
检测某个元素是否在集合中
srandmember set5
随机返回集合里面的某个元素,但是并不是删除。
5
、
sorted sets
类型及操作
zadd zset1 12 xiaobai 5 xaioliu 1 xiaohei
zrange zset1 0 -1
zrange zset1 0 -1 withscores
zrem zset1 xiaoliu
zrank zset1 xiaolong在集合中,返回指定元素的下标。(按照元素的序号升序)
zrevrank zset1 xiaohei
在集合中,返回指定元素的下标。(按照元素的序号降序)
zrevrange zset1 0 -1 withscores
查看集合里面的内容
,
按照元素的序号,降序显示的
zrangebyscore zset1 6 12 withscores返回集合中,根据序号的范围返回元素。
zcount zset1 6 12
zcard zset1
zremrangebyrank zset1 8 10
删除集合中,指定下标范围内容的元素
zremrangebyscore zset1 8 10
删除集合中,指定序号范围内的元素
Zinterstore---有序集合交集Zinterstore sum_point 2 mid_test fin_test
Zunionstore---有序集合并集Zunionstore salary 2 programmer manager WEIGHTS 1 3
五、
redis
的其他命令
keys *
keys n*
exists email
del name
select 1---共16个库
move name 1
将当前数据库中的
key
转移到其他数据库中
expire name 10
给一个键设置有效期,单位是秒
persist name
把
key
的有效期设置为永久有效,和
expire
命令对应
randomkey
随机返回一个键
type ha1
返回键的数据类型。
dbsize
返回当前数据库键的个数
info
查看
redis
服务器的一些信息
flushdb
删除当前选择数据库中的所有
key
flushall删除所有16个库的key
//---------------------------------------------------------------------------------------------------------
Redis-String,hash,list,set,Zset5种数据类型和其他命令
命令 | 含义 | 语法 | 返回值 |
Redis-string命令练习,可用于数据缓存 | |||
set | 设置键值,键名存在则覆盖 | set key vaule | set name xiaoyun |
setex | 设置延时键值 | setex key time value; | setex color 10 red,10秒后过期 |
setnx | 若键值存在设置失败 | setnx key value ; | |
mset | 一次设计多个键值 | mset key1 value1 key2 value3 | |
msetnx | 设置多个键值存在则失败 | msetnx key1 value1 key2 value2 | |
getset | 设置新值返回旧值 | getset key newValue | getset name xiaop |
get | 获取键值 | get key | get name |
getrange | 获取键值的内容 | getrange key begin end | getrange name 0 3 |
mget | 一次性获取多个值 | mget key1 key2 | mget name age |
incr | 键名自增1 | incr key | incr age |
incrby | 键名自增指定值 | incrby key num | incrby age 100 追加100 |
decr | 键名自减 1 | decr key | |
decrby | 键名自减指定值 | decrby key num | decrby age 100 |
append | 追加字符串 | append key value; | |
strlen | 获取值长度 | strlen key | strlen name |
Redis-hash命令练习,可用于临时储存用户数据 | |||
hset | 设置哈希键值 | hset key value | hset ha1 name xiaopen |
hsetnx | 检测哈希field若存在则0失败 | hsetnx key field value | hmset ha2 name xiaozhao age 30 |
hget | 获取hash内容 | hget key field | hmget ha2 name age |
hmset | 一次设置多个hash的field value | hmset key field1 vaule1 field2 vaule2 | |
hmget | 一次性获得多个field值 | hmget key field1 field2 | |
hincrby | field的值加指定的数值 | hiccrby key field num | hincrby ha2 age 100 |
hexists | 判断一个field是否存在 | hexisit key field; | hexists ha2 age存在返回1 |
hdel | 删除一个field | hdel firld; | |
hkeys | 返回hsah里面所有field | hkeys key | hkeys ha2 |
hvals | 返回所有的value | hvals key | hvals ha2 |
hgetall | 返回所有的 field和value | hgetall key | |
Redis-list命令练习,可用于时光机,消息队列
lrem删除符合条件的元素(count0所有符合的,n,-n从右往左n个符合的)lrem key count value
|
lrem user 2 id5从左往右删除2个是id5的值
| ||
lpush | 从头部向链表里面添加数据 | lpush key value | lpush list1 one |
lrange | 取出链表里面的全部内容 | lrange key 0 -1 | lrange key 0 -1 |
rpush | 从尾部向链表里面添加数据 | rpush key vaule | rpush list zero |
linsert | 在链表里指定的位置添加元素 | linsert key before 谁的前面 添加内容 | linsert key before tow xiaogang |
lset | 修改链表里面的元素内容 | lset key 元素的位置(从0开始) 新的值 | lset list 1 dagang |
ltrim | 保留链表中指定范围的元素 | ltrim key 开始位置 结束位置 | ltrim list 1 2 |
lpop | 删除并返回链表的头部元素 | lpop key | |
rpop | 删除并返回链表的尾部元素 | rpop key | |
lindex | 返回指定位置的元素 | lindex key 位置 | lindex list 1 |
llen | 返回链表中元素的个数lsize | llen key | |
Redis-set命令练习,可用于共同好友 | |||
sadd | 向集合里面添加元素 | sadd key value1 value2 | sadd set1 one two nihao xiaogang |
smembers | 获取集合里面的元素 | smembers key | smember set1 |
srem | 删除集合里面指定元素 | srem key 指定的元素 | srem set1 one |
spop | 随机删除和返回集合某个元素 | spop key | spop set1 |
dsiff | 差集 | sdiff key1 key2 | sdiff set1 set2 |
sdiffstore | 求差集并保存到新的集合 | sdiffstore newKey key1 key2 | sdiffstore set3 set1 set2 |
sinter | 交集 | sinter key1 key2 | sinter set1 set2 |
sinterstore | 求交集并保存到新的集合 | sinterstore 新集合 key1 key2 | sinterstore set4 set1 set2 |
sunion | 并集 | sunion key1 key2 | sunion set1 set2 |
sunionstore | 求并集并保存到新的集合 | sunionstore newKey key1 key2 | sunionstore set5 set1 set2 |
smove | 移动到key2 | smove key1 key2 移动的元素 | smove set2 set1 xiaoli |
scard | 返回集合中元素的个数 | scard key | scard set5 |
sismember | 检测某个元素是否在集合中 | sismember key 元素 | sismember set1 xiaolongbao |
srandmember | 随机返回集合某元素,不删除 | srandmember key | srandmember set5 |
Redis-Zset命令练习,可用于排名 | |||
Zadd | 向有序集合里面添加元素 | zadd key(有序集合名称) score1 元素1 score2 元素2…… | zadd zset1 12 xiaobai 5 xaioliu 1 xiaohei |
zrange | 按序号升序显示集合元素 | zrange key 开始下标 结束下标 [withscores] | zrange zset1 0 -1 withscores显示序号 |
zrevrange | 按序号降序显示集合元素 | zrevarange key 0 -1 withscore | zrevrange zset1 0 -1 withscores |
zrem | 删除集合中指定的元素 | zrem key 指定的元素 | zrem zset1 xiaoliu |
Zrank | 按序号升序返回指定元素的下标 | zrank key field | zrank zset1 xiaolong |
zrevrank | 按序号降序返回指定元素的下标 | zrevrank key field | zrevrank zset1 xiaohei |
zrangebyscore | 根据序号的范围返回元素 | zrangebyscore key 开始序号 结束序号 | zrangebyscore zset1 6 12 withscores |
Zcount | 返回指定序号范围内元素的个数 | zcount key 开始序号 结束序号 | zcount zset1 6 12 |
zcard | 返回集合中元素的个数 | zcard key | zcard zset1 |
zremrangebyrank | 删除指定下标范围内容的元素 | zremrangebyrank key 开始下标 结束下标 | zremrangebyrank zset1 8 10 |
Zremrangebyscore | 删除指定序号范围内的元素。 | zremrangebyscore key 开始序号 结束序号 | zremrangebyscore zset1 8 10 |
Redis的其他命令 | |||
keys | 查看当前数据库下面的键 | keys *或keys n* | keys *或keys n* |
exists | 查看某个键是否在当前数据库 | exists key | exists email |
del | 删除当前库指定键 | del key1 key2 key3 | del name |
select | 共16个库 | select 数据库编号 | select 1---共16个库 |
move | 将当前库的key转移到其他库 | move key 数据库编号 | move name 1 |
expire | 给一个键设置有效期,单位是秒 | expire key 秒数 | expire name 10 |
persist | 把key有效期设置为永久 | persist key | persist name |
randomkey | 随机返回一个键 | randomkey | randomkey |
type | 返回键的数据类型 | type | type ha1 |
dbsize | 返回当前库键的个数 | dbsize | |
info | 查看redis服务器信息 | info | |
flushdb | 删除当前库中的所有key | flushdb | |
flushall | 删除所有数据库中的key | flushall |